Usage¶
Picky has three main uses cases:
creating requirements files from an existing environment:
$ picky --update Babel 1.3 missing from requirements.txt python 2.7.9 missing from conda_versions.txt Updating 'requirements.txt' Updating 'conda_versions.txt'
ensuring the requirements completely match the packages installed:
$ picky testfixtures 4.1.2 in pip freeze but 4.1.0 in requirements.txt Babel 1.3 missing from pip freeze python 2.7.9 in conda list -e but 3.4.0 in conda-versions.txt readline 6.2 missing from conda list -e
updating the specifications based on the current environment:
$ picky --update testfixtures 4.1.2 in pip freeze but 4.1.0 in requirements.txt Babel 1.3 missing from pip freeze python 2.7.9 in conda list -e but 3.4.0 in conda-versions.txt readline 6.2 missing from conda list -e Updating 'requirements.txt' Updating 'conda_versions.txt'
Return codes¶
The return code set by picky will be non-zero if the requirements
files do not exactly match the packages found in the environment:
$ picky
Babel 1.3 missing from requirements.txt
python 2.7.9 missing from conda_versions.txt
$ echo $?
1
This can be useful in continuous integration environments to check that all packages used in your environment are specified and pinned to specific versions by your requirements files.
Log levels¶
If you want more information about what picky is doing, run it with a lower
log level, such as debug:
$ picky -l debug
2015-05-01 09:08:10 INFO Using '/path/to/pip' for pip
2015-05-01 09:08:10 INFO Using 'requirements.txt' for pip
2015-05-01 09:08:10 INFO Using '/path/to/conda' for conda
2015-05-01 09:08:10 INFO Using 'conda_versions.txt' for conda
Using with Pip¶
By default, picky will look for the pip binary on the current $PATH
and will look for the requirements in a file called requirements.txt in
the current working directory.
Both the location of the pip binary and the requirements file can be specified
explicitly by using the --pip and --pip-requirements options,
respectively.
Using with Conda¶
By default, picky will look for the conda binary on the current $PATH
and will look for the requirements in a file called conda_versions.txt in
the current working directory.
Both the location of the pip binary and the requirements file can be specified
explicitly by using the --conda and --conda-versions options,
respectively.
A new conda environment can be created from a conda_versions.txt file as
follows:
conda create -n <environment name> --file conda_versions.txt
Note
Build numbers, the third section of a conda version specifier, are ignored
by picky as these may differ across platforms even though the package
version is otherwise identical.
Using with Conda and Pip¶
When used in a conda environment that also has some packages installed with pip, picky will ensure that both the conda and pip requirements files do not conflict with each other, and that a package will only appear in one or other of the requirements files.