Skip to content

Instantly share code, notes, and snippets.

@luiscape
Created January 16, 2017 14:36
Show Gist options
  • Save luiscape/19d2d73a8c7b59411a2fb73a697f5ed4 to your computer and use it in GitHub Desktop.
Save luiscape/19d2d73a8c7b59411a2fb73a697f5ed4 to your computer and use it in GitHub Desktop.
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
@bit-scientist
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
Copy link

@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
Copy link

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
Copy link

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

@makmanalp
Copy link

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
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
Copy link

Perfect .. worked for me .. thanks

@ShixiangWang
Copy link

This should delete comment lines firstly.

@IbnNafis007
Copy link

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
Copy link

conda install --file requirements.txt

@oskar-j
Copy link

oskar-j commented Feb 26, 2019

Yes @SpyderRivera seems like they've added this recently

@pradyumnasagar
Copy link

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

@abhatnag
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

Copy link

ghost commented Jun 27, 2019

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

@FhyTan
Copy link

FhyTan commented Aug 8, 2019

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

@hmwasita
Copy link

hmwasita commented Nov 6, 2020

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.

Thanks, It worked for me

@Fahad021
Copy link

conda install --file requirements.txt

does not work

@Fahad021
Copy link

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.

Thanks, It worked for me

worked.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment