Unified Conda and Pip requirements management.
Project description
:rocket: conda-join
- Unified Conda and Pip Requirements Management :rocket:
conda-join
simplifies Python project dependency management by enabling a single requirements.yaml
file to handle both Conda and Pip dependencies.
This streamlined approach allows for creating a unified Conda environment.yaml
, while also seamlessly integrating with setup.py
or pyproject.toml
.
In addition, it can be used as a CLI to combine multiple requirements.yaml
files into a single environment.yaml
file.
Simplify your setup and maintain all your dependencies in one place with conda-join
.
:books: Table of Contents
:package: Installation
To install conda-join
, run the following command:
pip install -U conda-join
Or just copy the script to your computer:
wget https://raw.githubusercontent.com/basnijholt/conda-join/main/conda_join.py
:page_facing_up: requirements.yaml
structure
conda-join
processes requirements.yaml
files with a specific format:
- name (Optional): For documentation, not used in the output.
- channels: List of sources for packages, such as
conda-forge
. - dependencies: Mix of Conda and Pip packages.
Example
Example of a requirements.yaml
file:
name: example_environment
channels:
- conda-forge
dependencies:
- numpy # same name on conda and pip
- conda: python-graphviz # When names differ between Conda and Pip
pip: graphviz
- pip: slurm-usage # pip-only
- conda: mumps # conda-only
⚠️ conda-join
can process this file in pyproject.toml
or setup.py
and create a environment.yaml
file.
Key Points
- Standard names (e.g.,
- numpy
) are assumed to be the same for Conda and Pip. - Use
conda: <package>
andpip: <package>
to specify different names across platforms. - Use
pip:
to specify packages that are only available through Pip. - Use
conda:
to specify packages that are only available through Conda.
Using the CLI conda-join
will combine these dependencies into a single environment.yaml
file, structured as follows:
name: some_name
channels:
- conda-forge
dependencies:
- numpy
- python-graphviz
- mumps
pip:
- slurm-usage
:memo: Usage
With pyproject.toml
or setup.py
To use conda-join
in your project, you can configure it in pyproject.toml
. This setup works alongside a requirements.yaml
file located in the same directory. The behavior depends on your project's setup:
- When using only
pyproject.toml
: Thedependencies
field inpyproject.toml
will be automatically populated based on the contents ofrequirements.yaml
. - When using
setup.py
: Theinstall_requires
field insetup.py
will be automatically populated, reflecting the dependencies defined inrequirements.yaml
.
Here's an example pyproject.toml
configuration:
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel", "conda-join"]
[project]
dynamic = ["dependencies"]
In this configuration, conda-join
is included as a build requirement, allowing it to process the Python dependencies in the requirements.yaml
file and update the project's dependencies accordingly.
:memo: As a CLI
Use conda-join
to scan directories for requirements.yaml
file(s) and combine them into an environment.yaml
file.
See example for more information or check the output of conda-join -h
:
usage: conda-join [-h] [-d DIRECTORY] [-o OUTPUT] [-n NAME] [--depth DEPTH]
[--stdout] [-v]
Unified Conda and Pip requirements management.
options:
-h, --help show this help message and exit
-d DIRECTORY, --directory DIRECTORY
Base directory to scan for requirements.yaml files, by
default `.`
-o OUTPUT, --output OUTPUT
Output file for the conda environment, by default
`environment.yaml`
-n NAME, --name NAME Name of the conda environment, by default `myenv`
--depth DEPTH Depth to scan for requirements.yaml files, by default
1
--stdout Output to stdout instead of a file
-v, --verbose Print verbose output
Limitations
- No Conflict Resolution: Doesn't resolve version conflicts between different
requirements.yaml
files. - Conda-Focused: Best suited for Conda environments.
Try conda-join
today for a streamlined approach to managing your Conda environment dependencies across multiple projects! 🎉👏
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file conda-join-0.10.0.tar.gz
.
File metadata
- Download URL: conda-join-0.10.0.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 882f8061aa305f8ee4eca58b7a00581a41e6504aa26b2c8a66f2ae50644d9849 |
|
MD5 | 8317454b53d4519f7d0bc82dae7e1fbd |
|
BLAKE2b-256 | caaa2e58c26ef2e27d59bd52a381da5d81ffd55f7e5a4ee06d4d3ba22792cf5d |
File details
Details for the file conda_join-0.10.0-py3-none-any.whl
.
File metadata
- Download URL: conda_join-0.10.0-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bee1bf763c3211644f02ce226a42ad2e235d345204f748230d1038d114f29898 |
|
MD5 | 51c3341d9afdde427214d856166102c4 |
|
BLAKE2b-256 | 890f94e6df11eafbfe1f840af78dedbbb834b2848f95c876176396ba7fa53d05 |