Related
Here is the problem:
I have a requirements.txt file that looks like:
BeautifulSoup==3.2.0
Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09
Pygments==1.4
SQLAlchemy==0.7.1
South==0.7.3
amqplib==0.6.1
anyjson==0.3
...
I have a local archive directory containing all the packages + others.
I have created a new virtualenv with
bin/virtualenv testing
Upon activating it, I tried to install the packages according to requirements.txt from the local archive directory.
source bin/activate
pip install -r /path/to/requirements.txt -f file:///path/to/archive/
I got some output that seems to indicate that the installation is fine:
Downloading/unpacking Fabric==1.2.0 (from -r ../testing/requirements.txt (line 3))
Running setup.py egg_info for package Fabric
warning: no previously-included files matching '*' found under directory 'docs/_build'
warning: no files found matching 'fabfile.py'
Downloading/unpacking South==0.7.3 (from -r ../testing/requirements.txt (line 8))
Running setup.py egg_info for package South
....
But a later check revealed that none of the packages are installed properly. I cannot import the packages, and none are found in the site-packages directory of my virtualenv. So what went wrong?
This works for everyone:
pip install -r /path/to/requirements.txt
Explanation:
-r, --requirement < filename >
Install from the given requirements file. This option can be used multiple times.
This works for me:
$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages
--no-index - Ignore package index (only looking at --find-links URLs instead).
-f, --find-links <URL> - If a URL or path to an HTML file, then parse for links to archives.
If a local path or file:// URL that's a directory, then look for archives in the directory listing.
For virtualenv to install all files in the requirements.txt file.
cd to the directory where requirements.txt is located
activate your virtualenv
run: pip install -r requirements.txt in your shell
I had a similar problem. I tried this:
pip install -U -r requirements.txt
(-U = update if it had already installed)
But the problem continued. I realized that some of generic libraries for development were missed.
sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk
I don't know if this would help you.
Use:
pip install -r requirements.txt
For further details, please check the help option:
pip install --help
We can find the option '-r' -
-r, --requirement Install from the given requirements file. This option can be
used multiple times.
Further information on some commonly used pip install options (this is the help option on the pip install command):
Also the above is the complete set of options. Please use pip install --help for the complete list of options.
Short answer
pip install -r /path/to/requirements.txt
or in another form:
python -m pip install -r /path/to/requirements.txt
Explanation
Here, -r is short form of --requirement and it asks the pip to install from the given requirements file.
pip will start installation only after checking the availability of all listed items in the requirements file and it won't start installation even if one requirement is unavailable.
One workaround to install the available packages is installing listed packages one by one. Use the following command for that. A red color warning will be shown to notify you about the unavailable packages.
cat requirements.txt | xargs -n 1 pip install
To ignore comments (lines starting with a #) and blank lines, use:
cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
First of all, create a virtual environment.
In Python 3.6
virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>
In Python 2.7
virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>
Then activate the environment and install all the packages available in the requirement.txt file.
source <path/to/new/virtualenv>/bin/activate
pip install -r <path/to/requirement.txt>
Often, you will want a fast install from local archives, without probing PyPI.
First, download the archives that fulfill your requirements:
$ pip install --download <DIR> -r requirements.txt
Then, install using –find-links and –no-index:
$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt
Try this:
python -m pip install -r requirements.txt
I work with a lot of systems that have been mucked by developers "following directions they found on the Internet". It is extremely common that your pip and your python are not looking at the same paths/site-packages. For this reason, when I encounter oddness I start by doing this:
$ python -c 'import sys; print(sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
$ pip --version
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
That is a happy system.
Below is an unhappy system. (Or at least it's a blissfully ignorant system that causes others to be unhappy.)
$ pip --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
$ python -c 'import sys; print(sys.path)'
['', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages']
$ which pip pip2 pip3
/usr/local/bin/pip
/usr/local/bin/pip3
It is unhappy because pip is (python3.6 and) using /usr/local/lib/python3.6/site-packages while python is (python2.7 and) using /usr/local/lib/python2.7/site-packages
When I want to make sure I'm installing requirements to the right python, I do this:
$ which -a python python2 python3
/usr/local/bin/python
/usr/bin/python
/usr/local/bin/python2
/usr/local/bin/python3
$ /usr/bin/python -m pip install -r requirements.txt
You've heard, "If it ain't broke, don't try to fix it." The DevOps version of that is, "If you didn't break it and you can work around it, don't try to fix it."
Installing requirements.txt file inside virtual env with Python 3:
I had the same issue. I was trying to install the requirements.txt file inside a virtual environment. I found the solution.
Initially, I created my virtualenv in this way:
virtualenv -p python3 myenv
Activate the environment using:
source myenv/bin/activate
Now I installed the requirements.txt file using:
pip3 install -r requirements.txt
Installation was successful and I was able to import the modules.
Create virtual environment python3 -m venv virtual-env (For windows use python instead of python3)
Activate your virtual environment source virtual-env/bin/activate
Now install requirements pip install -r requirements.txt
pip install --user -r requirements.txt
OR
pip3 install --user -r requirements.txt
Use pip3 install -r requirements.txt But make sure the requirements.txt file has been pulled from origin and not added to .gitignore
In Windows, this can lead to less format-related path issues, if you have
c:\folder\subfolder\requirements.txt
cd c:\folder\subfolder
pip install -r requirements.txt
On windows Using this
pip install -r /path/to/requirements.txt
On linux pc we have python2 and also python3 so most time pip is regarded as
Python2
pip install -r /path/to/requirements.txt
Python 3
pip3 install -r /path/to/requirements.txt
While pip install -r requirements.txt works most of the time,
we sometimes face the problem that our requirements have conflicting dependencies.
You can install the packages line-by-line with the following one-liner:
while read -r line; do echo $line | cut -d' ' -f1 | xargs pip install; done < requirements.txt
Hope it helps someone!
Inside your project directory terminal write this:
$ pip freeze > requirements.txt
I have solved with running the below command:
py -m pip install ./requirements.txt
the above command will install all dependencies and libraries for the Django project.
After cloning a Django application, I went to install the virtual environment in terminal.
I entered the folder and typed: pip install -r requirements.txt
but got the error: -bash: pip: command not found
It seems that you are missing the pip itself which you can install from packaging repository depending on your OS or download (manually or with wget) the and install it using python. This will automatically associate your python version with required pip version. See following commands:
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
Here is the problem:
I have a requirements.txt file that looks like:
BeautifulSoup==3.2.0
Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09
Pygments==1.4
SQLAlchemy==0.7.1
South==0.7.3
amqplib==0.6.1
anyjson==0.3
...
I have a local archive directory containing all the packages + others.
I have created a new virtualenv with
bin/virtualenv testing
Upon activating it, I tried to install the packages according to requirements.txt from the local archive directory.
source bin/activate
pip install -r /path/to/requirements.txt -f file:///path/to/archive/
I got some output that seems to indicate that the installation is fine:
Downloading/unpacking Fabric==1.2.0 (from -r ../testing/requirements.txt (line 3))
Running setup.py egg_info for package Fabric
warning: no previously-included files matching '*' found under directory 'docs/_build'
warning: no files found matching 'fabfile.py'
Downloading/unpacking South==0.7.3 (from -r ../testing/requirements.txt (line 8))
Running setup.py egg_info for package South
....
But a later check revealed that none of the packages are installed properly. I cannot import the packages, and none are found in the site-packages directory of my virtualenv. So what went wrong?
This works for everyone:
pip install -r /path/to/requirements.txt
Explanation:
-r, --requirement < filename >
Install from the given requirements file. This option can be used multiple times.
This works for me:
$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages
--no-index - Ignore package index (only looking at --find-links URLs instead).
-f, --find-links <URL> - If a URL or path to an HTML file, then parse for links to archives.
If a local path or file:// URL that's a directory, then look for archives in the directory listing.
For virtualenv to install all files in the requirements.txt file.
cd to the directory where requirements.txt is located
activate your virtualenv
run: pip install -r requirements.txt in your shell
I had a similar problem. I tried this:
pip install -U -r requirements.txt
(-U = update if it had already installed)
But the problem continued. I realized that some of generic libraries for development were missed.
sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk
I don't know if this would help you.
Use:
pip install -r requirements.txt
For further details, please check the help option:
pip install --help
We can find the option '-r' -
-r, --requirement Install from the given requirements file. This option can be
used multiple times.
Further information on some commonly used pip install options (this is the help option on the pip install command):
Also the above is the complete set of options. Please use pip install --help for the complete list of options.
Short answer
pip install -r /path/to/requirements.txt
or in another form:
python -m pip install -r /path/to/requirements.txt
Explanation
Here, -r is short form of --requirement and it asks the pip to install from the given requirements file.
pip will start installation only after checking the availability of all listed items in the requirements file and it won't start installation even if one requirement is unavailable.
One workaround to install the available packages is installing listed packages one by one. Use the following command for that. A red color warning will be shown to notify you about the unavailable packages.
cat requirements.txt | xargs -n 1 pip install
To ignore comments (lines starting with a #) and blank lines, use:
cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
First of all, create a virtual environment.
In Python 3.6
virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>
In Python 2.7
virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>
Then activate the environment and install all the packages available in the requirement.txt file.
source <path/to/new/virtualenv>/bin/activate
pip install -r <path/to/requirement.txt>
Often, you will want a fast install from local archives, without probing PyPI.
First, download the archives that fulfill your requirements:
$ pip install --download <DIR> -r requirements.txt
Then, install using –find-links and –no-index:
$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt
Try this:
python -m pip install -r requirements.txt
I work with a lot of systems that have been mucked by developers "following directions they found on the Internet". It is extremely common that your pip and your python are not looking at the same paths/site-packages. For this reason, when I encounter oddness I start by doing this:
$ python -c 'import sys; print(sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
$ pip --version
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
That is a happy system.
Below is an unhappy system. (Or at least it's a blissfully ignorant system that causes others to be unhappy.)
$ pip --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
$ python -c 'import sys; print(sys.path)'
['', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages']
$ which pip pip2 pip3
/usr/local/bin/pip
/usr/local/bin/pip3
It is unhappy because pip is (python3.6 and) using /usr/local/lib/python3.6/site-packages while python is (python2.7 and) using /usr/local/lib/python2.7/site-packages
When I want to make sure I'm installing requirements to the right python, I do this:
$ which -a python python2 python3
/usr/local/bin/python
/usr/bin/python
/usr/local/bin/python2
/usr/local/bin/python3
$ /usr/bin/python -m pip install -r requirements.txt
You've heard, "If it ain't broke, don't try to fix it." The DevOps version of that is, "If you didn't break it and you can work around it, don't try to fix it."
Installing requirements.txt file inside virtual env with Python 3:
I had the same issue. I was trying to install the requirements.txt file inside a virtual environment. I found the solution.
Initially, I created my virtualenv in this way:
virtualenv -p python3 myenv
Activate the environment using:
source myenv/bin/activate
Now I installed the requirements.txt file using:
pip3 install -r requirements.txt
Installation was successful and I was able to import the modules.
Create virtual environment python3 -m venv virtual-env (For windows use python instead of python3)
Activate your virtual environment source virtual-env/bin/activate
Now install requirements pip install -r requirements.txt
pip install --user -r requirements.txt
OR
pip3 install --user -r requirements.txt
Use pip3 install -r requirements.txt But make sure the requirements.txt file has been pulled from origin and not added to .gitignore
In Windows, this can lead to less format-related path issues, if you have
c:\folder\subfolder\requirements.txt
cd c:\folder\subfolder
pip install -r requirements.txt
On windows Using this
pip install -r /path/to/requirements.txt
On linux pc we have python2 and also python3 so most time pip is regarded as
Python2
pip install -r /path/to/requirements.txt
Python 3
pip3 install -r /path/to/requirements.txt
While pip install -r requirements.txt works most of the time,
we sometimes face the problem that our requirements have conflicting dependencies.
You can install the packages line-by-line with the following one-liner:
while read -r line; do echo $line | cut -d' ' -f1 | xargs pip install; done < requirements.txt
Hope it helps someone!
Inside your project directory terminal write this:
$ pip freeze > requirements.txt
I have solved with running the below command:
py -m pip install ./requirements.txt
the above command will install all dependencies and libraries for the Django project.
In order to make packages installed offline, I use the -d (or --download) option to pip install. For instance, pip install --download dependencies -r requirements.txt will download the packages for all required dependencies mentioned in requirements.txt to dependencies dir (but will not install them). Then I use pip install --no-index --find-links dependencies -r requirements.txt to install those downloaded packages without accessing the network.
Most of the time it works fine, but sometimes installation fails with error "Could not find a version that satisfies the requirement xyz". After doing pip install --user xyz --find-links dependencies manually (xyz IS present in the dependencies folder), installation fails with the same "Could not find a version that satisfies the requirement abc" error, but with different package 'abc'. It repeats several times until I manually resolve all failed dependencies.
How could I make run pip install --no-index --find-links dependencies -r requirements.txt without those weird dependency errors not finding packages that are already there?
Make sure of two things:
The pip version is the same in the offline server and in the online one.
To find out: pip -V
To update (if needed): pip install --upgrade pip
The python version is the same in both virtual enviroments or servers.
To find out: python (the header will have the version info)
In my case I was calling pip install --download outside the virtual environment (using default python version - 2.7) and then installing in a virtual environment with python 3 and the error I got was exactly the one you mentioned.
We have a python/django based web application, many components of which are installed using pip. So I would like to ask if there is a way to save or download and save the particular python packages that we are having pip install (example: pip install django==1.5.1). We would like to have in the end a collection of the packages in the versions known to be working and with which the app was developed locally. Any and all advice will be appreciated.
If I understood your question right, you can pip freeze > requirements.txt, this command will add all the libraries you have used/"downloaded" for your app in the file requirements.txt(in case it exists the file be overwritten). This command allows you to later do pip install -r requirements.txt. However, be aware that your Django project must be running in a virtual environment, otherwise the install command will attempt to install all the python packages in your development machine.
The freeze command will allow you to have the current version of the app so upon installation will attempt to install that same version. Your requirements file will look something like:
Flask==0.8
Jinja2==2.6
Werkzeug==0.8.3
certifi==0.0.8
chardet==1.0.1
distribute==0.6.24
gunicorn==0.14.2
requests==0.11.1
Your packages are installed (if using virtualenv) at: ../<your project>/<your virtual env>/<lib>/<python version>/<site-packages>/
As for downloading you can use pip install --download command as #atupal suggested in his response, however think if this is really needed you can also fork those libraries on github to accomplish the same.
Here is a good source of information on how this works: http://www.pip-installer.org/en/latest/cookbook.html
Maybe what you want is:
Download the packages:
pip install --download /path/to/download/to packagename
OR
pip install --download=/path/to/packages/downloaded -r requirements.txt
install all of those libraries just downloaded:
pip install --no-index --find-links="/path/to/downloaded/dependencies" packagename
OR
pip install --no-index --find-links="/path/to/downloaded/packages" -r requirements.txt
Shamelessly stolen from this question
Create a requirements.txt file.
Put:
django==1.5.1
in the first line.
Then run pip install -r requirements.txt
Then you can complete that file...