如何根据本地目录中的requirements.txt文件使用pip安装软件包?

时间:2011-08-29 03:53:04

标签: python virtualenv pip

这是问题

我有一个看起来像:

的requirements.txt
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
...

我有一个包含所有包+其他包的本地存档目录。

我用

创建了一个新的virtualenv
bin/virtualenv testing

激活它后,我尝试根据本地存档目录中的requirements.txt安装软件包。

source bin/activate
pip install -r /path/to/requirements.txt -f file:///path/to/archive/

我得到了一些似乎表明安装正常的输出

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
....

但后来检查发现没有正确安装包。我无法导入包,并且在virtualenv的site-packages目录中找不到任何包。出了什么问题?

12 个答案:

答案 0 :(得分:1150)

我已经阅读了上述内容,意识到这是一个老问题,但它完全没有解决,仍然是我的谷歌搜索结果的顶部,所以这里的答案适用于所有人:

pip install -r /path/to/requirements.txt

答案 1 :(得分:585)

这对我有用:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages

--no-index - 忽略包索引(仅查看--find-links个网址)。

-f, --find-links <URL> - 如果是html文件的URL或路径,则解析链接到档案。 如果是本地路径或file:// URL是目录,则在目录列表中查找存档。

答案 2 :(得分:113)

让virtualenv在requirements.txt文件中安装所有文件。

  1. cd到requirements.txt所在的目录
  2. 激活你的virtualenv
  3. 在你的shell中运行pip install -r requirements.txt

答案 3 :(得分:47)

我有类似的问题。我试过这个:

pip install -U -r requirements.txt 

( - 如果已经安装,则U =更新)

但问题还在继续。我意识到错过了一些用于开发的通用库。

sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk

我不知道这对你有帮助。

答案 4 :(得分:23)

pip install -r requirements.txt

有关详细信息,请查看帮助选项。

pip install --help

我们可以找到选项&#39; -r&#39;

  

-r, - required从给定的需求文件安装。这个选项可以                                 多次使用。

有关一些常用pip安装选项的更多信息:(这是pip install命令的帮助选项)

enter image description here

以上是完整的选项集。请使用pip install --help获取完整的选项列表。

答案 5 :(得分:15)

通常,您需要从本地存档快速安装,而不需要探测PyPI。

首先,下载满足您要求的档案:

$ pip install --download <DIR> -r requirements.txt

然后,使用–find-links–no-index安装:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt

答案 6 :(得分:9)

我使用了许多被开发人员搞砸的系统,并遵循他们在互联网上找到的指示&#34;。您的pippython不会查看相同的路径/网站包,这是非常常见的。出于这个原因,当我遇到奇怪时,我开始这样做:

$ 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)

这是快乐系统

以下是不愉快的系统。 (或者至少它是一个幸福无知的系统,导致其他人不高兴。)

$ 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

unhappy 因为pip是(python3.6和)使用/usr/local/lib/python3.6/site-packagespython是(python2.7和)使用/usr/local/lib/python2.7/site-packages }

当我想确保我在 python上安装需求时,我这样做:

$ 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

您已经听说过,&#34;如果它没有破损,请不要尝试修复它。&#34; DevOps的版本是,&#34;如果你没有打破它并且你可以解决它,不要试图解决它。&#34;

答案 7 :(得分:7)

尝试

python -m pip install -r requirements.txt

答案 8 :(得分:6)

简短答案

pip install -r /path/to/requirements.txt

或另一种形式:

python -m pip install -r /path/to/requirements.txt

说明

在这里,-r--requirement的缩写,它要求pip从给定的requirements文件中进行安装。

pip仅在检查requirements文件中所有列出的项目的可用性之后才开始安装,并且即使一个requirement不可用也不会开始安装。

一种安装可用软件包的解决方法是逐一安装列出的软件包。为此使用以下命令。将显示红色警告,以通知您有关不可用的软件包的信息。

cat requirements.txt | xargs -n 1 pip install

要忽略注释(以#开头的行)和空白行,请使用:

cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install

答案 9 :(得分:6)

首先,创建一个虚拟环境

在python 3.6中

virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>

在python 2.7中

virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>

然后激活环境并安装require.txt文件中所有可用的软件包。

source <path/to/new/virtualenv>/bin/activate
pip install -r <path/to/requirement.txt>

答案 10 :(得分:5)

使用python 3在虚拟环境中安装requirements.txt文件:

我有同样的问题。我试图在虚拟环境中安装requirements.txt文件。我找到了解决方案。

最初,我以这种方式创建了我的虚拟环境:

virtualenv -p python3 myenv

使用以下方式激活环境:

source myenv/bin/activate

现在我使用:

安装了requirements.txt
pip3 install -r requirements.txt

安装成功,我可以导入模块。

答案 11 :(得分:5)

pip install --user -r requirements.txt 

OR

pip3 install --user -r requirements.txt