Comments (3)
All of this comes down to the fact that CondaPkg might find multiple CondaPkg.toml files (e.g. in your project plus some of its dependencies) and it needs to decide how to merge them. That, plus Conda only has two ways to specify channels: a list of channels to look in for all packages (via the --channel
) argument, or a specific channel for a particular package (via the channel::package
syntax). Currently we don't use the latter method. So to address your points:
- This is intentional, and documented, that not specifying a list of channels is equivalent to specifying only
conda-forge
. Someone who writes a CondaPkg.toml file must know in which channels to look. - This is intentional, and comes from the fact that different CondaPkg.toml files might have a different view on which channels are more important. Since there's no way for them to agree, I just enforce that there is no specified order on channels.
- I do intend to allow specifying channels on a per-package basis, but haven't quite figured out how that would work.
Ultimately, I think CondaPkg will change to use the channel::package
syntax entirely instead of the global --channel
argument, because frankly it's pretty weird to have a list of channels which all might contain different packages of the same name (or the same package but built differently, like in your case, which is just a different package in my book).
The reason I don't use environments.yml
is mainly that I don't want to be constrained to its syntax - I need to be able to parse it correctly, and that's easier if I define the format of the file myself (e.g. I don't need to worry about the full package spec format), plus I might need to add more fields not currently in environment.yml
. Also TOML is standard in the Julia community. Also I need to parse these quickly at startup time and TOML was the only parser I found which didn't add to the package load time.
from condapkg.jl.
See #25.
from condapkg.jl.
Whoa! I thought I knew a bit about conda, what with doing all sorts of conda-build fanciness, maintaining conda-forge packages, etc. But I had never come across the channel::package
syntax. Even now, I'm having real trouble finding finding it in any documentation, other than some ambiguous ugliness, a subtle usage in the search help text, and the full spec in a docstring that apparently doesn't make it into the docs.
Thanks for explaining your reasoning. That all makes sense.
from condapkg.jl.
Related Issues (20)
- CondaPkg constantly uninstalling, reinstalling all packages HOT 4
- `conda-build` and `conda skeleton` HOT 3
- Automatically load conda packages from the dependend julia packages HOT 3
- To do: ignore indirect dependencies on CondaPkg
- How to make RCall.jl use a CondaPkg.jl environment? HOT 8
- add preferences to control allowed channels and priority
- freeze the environment by default when it is activated HOT 2
- add completions for rm, pip_rm and channel_rm HOT 1
- dependency overrides HOT 1
- [Bug] file is not passed to write_toml HOT 2
- only add channel if it is not already added
- using CondaPkg with Pluto leads to unnecesarry resolves HOT 7
- Post install/update hook HOT 3
- Feature Request: Support CONDA_CHANNELS to set conda channels HOT 1
- access denied.: "C:\Users\...\v1.9\.CondaPkg\env\DLLs\_ctypes.pyd.mamba_trash" HOT 1
- `pip_add` for URLs HOT 6
- `critical libmamba could not load prefix data` after conda add failed due to low memory HOT 1
- Make `--override-channels` optional? HOT 1
- Testing a package that depend on CondaPkg.jl creates a new environment every time HOT 4
- it seems that this pkg does not support the capital letters
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from condapkg.jl.