Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Install Python dependency packages from requirements.txt using conda.
#
# Original solution via StackOverflow:
# http://stackoverflow.com/questions/35802939/install-only-available-packages-using-conda-install-yes-file-requirements-t
#
#
# Install via `conda` directly.
# This will fail to install all
# dependencies. If one fails,
# all dependencies will fail to install.
#
conda install --yes --file requirements.txt
#
# To go around issue above, one can
# iterate over all lines in the
# requirements.txt file.
#
while read requirement; do conda install --yes $requirement; done < requirements.txt
@brando90

This comment has been minimized.

Copy link

brando90 commented Oct 7, 2017

why do u need the second one?

@soultemptation

This comment has been minimized.

Copy link

soultemptation commented Dec 13, 2017

What do you mean with the "second one"? The second command? The second parameter?
Why line 19 is used is described in the comments above it.

@draskell

This comment has been minimized.

Copy link

draskell commented Dec 28, 2017

This is really useful, I have recently found out about the environment.yml approach for managing dependencies with conda through a stack overflow question: here. I'm wondering if you could expand this script to create an environment yaml or write out a pip-requirements.txt file as it goes through the lines?

One suggested improvement was to catch the errors:
while read requirement; do conda install --yes $requirement; done < requirements.txt 2>error.log

@aleksod

This comment has been minimized.

Copy link

aleksod commented Jan 25, 2018

This is great! Thank you!

@bit-scientist

This comment has been minimized.

Copy link

bit-scientist commented Mar 24, 2018

I am in the conda env and the conda install --yes --file requirements.txt failed. Now, here you gave a solution: while read requirement; do conda install --yes $requirement; done < requirements.txt

Where is that snippet inserted? Should I change requirements.txt file or what?

I am a windows user btw

@No-Stream

This comment has been minimized.

Copy link

No-Stream commented May 1, 2018

@git-sohib you just run that from your directory that contains the requirements.txt file. (If it's not named requirements.txt, you can change the filename in that command.)

Note that the command installs packages one at a time, so it's a bit slower than batch installing, but it doesn't fail if Conda encounters some errors. (For instance, if a package isn't available as a Conda package, then the install fails.) You may want to try the simpler conda install --yes --file requirements.txt if you expect the packages to be available.

@dror-kris

This comment has been minimized.

Copy link

dror-kris commented May 23, 2018

I'm trying to run the command, but receive the error:
'while' is not recognized as an internal or external command, operable program or batch file

image

What am I missing?

@vickylance

This comment has been minimized.

Copy link

vickylance commented May 30, 2018

@dror-kris That is a sh file meant to run on a linux as a bash script. Not on windows.

@makmanalp

This comment has been minimized.

Copy link

makmanalp commented Jun 14, 2018

One potential issue with this is that when you install each package individually, conda won't have a unified view of what version of everything you're installing and whether their subdependencies conflict, so the later packages you install might override things that earlier packages installed (I think?)

@tgandor

This comment has been minimized.

Copy link

tgandor commented Sep 20, 2018

I hope they fix this in the conda command, if this is really the case (maybe it's a problem with some packages' dependencies specification rather than conda), because conda says:
conda install --help (...) --file FILE Read package versions from the given file. Repeated file specifications can be passed (e.g. --file=file1 --file=file2). --no-deps Do not install, update, remove, or change dependencies. This WILL lead to broken environments and inconsistent behavior. Use at your own risk. --only-deps Only install dependencies.

This means, it should acually handle the deps.

BTW, the second part is a plain bash loop. In Windows it's done like this:

for /f %i in (requirements.txt) do conda install --yes %i - when run manually
for /f %%i in (requirements.txt) do conda install --yes %%i - when inside a BAT script.

@rohitpattnaik

This comment has been minimized.

Copy link

rohitpattnaik commented Sep 27, 2018

Perfect .. worked for me .. thanks

@ShixiangWang

This comment has been minimized.

Copy link

ShixiangWang commented Nov 19, 2018

This should delete comment lines firstly.

@IbnNafis007

This comment has been minimized.

Copy link

IbnNafis007 commented Dec 19, 2018

I hope they fix this in the conda command, if this is really the case (maybe it's a problem with some packages' dependencies specification rather than conda), because conda says:
conda install --help (...) --file FILE Read package versions from the given file. Repeated file specifications can be passed (e.g. --file=file1 --file=file2). --no-deps Do not install, update, remove, or change dependencies. This WILL lead to broken environments and inconsistent behavior. Use at your own risk. --only-deps Only install dependencies.

This means, it should acually handle the deps.

BTW, the second part is a plain bash loop. In Windows it's done like this:

for /f %i in (requirements.txt) do conda install --yes %i - when run manually
for /f %%i in (requirements.txt) do conda install --yes %%i - when inside a BAT script.

Great

@SpyderRivera

This comment has been minimized.

Copy link

SpyderRivera commented Jan 24, 2019

conda install --file requirements.txt

@oskar-j

This comment has been minimized.

Copy link

oskar-j commented Feb 26, 2019

Yes @SpyderRivera seems like they've added this recently

@pradyumnasagar

This comment has been minimized.

Copy link

pradyumnasagar commented Mar 27, 2019

what to do if the packages in requirement.txt are from different channel?

@abhatnag

This comment has been minimized.

Copy link

abhatnag commented Apr 2, 2019

@pradyumnasagar append to the list of channels that conda will search for. For instance, if you want to use conda-forge:
conda config --append channels conda-forge

@jesperjoachims

This comment has been minimized.

Copy link

jesperjoachims commented Jun 27, 2019

Thanks luiscape, for the tip on solving the requirements.txt with conda.

@FhyTan

This comment has been minimized.

Copy link

FhyTan commented Aug 8, 2019

Thanks, an elegant way to make pip list compatible in Conda environment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.