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

kak*_*eys 967 python pip virtualenv

这是问题所在

我有一个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
...
Run Code Online (Sandbox Code Playgroud)

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

我用它创造了一个新的virtualenv

bin/virtualenv testing
Run Code Online (Sandbox Code Playgroud)

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

source bin/activate
pip install -r /path/to/requirements.txt -f file:///path/to/archive/
Run Code Online (Sandbox Code Playgroud)

我得到了一些输出似乎表明安装没问题

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
....
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*ons 1269

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

pip install -r /path/to/requirements.txt
Run Code Online (Sandbox Code Playgroud)

  • 我意识到这个答案没有解决原来的问题,但它回答了我在Google上发现这个问题时的问题...... (261认同)
  • 对于那些想知道它们输入内容的人来说,命令中的-r只是意味着"从需求文件安装",并且是--requirement的快捷方式 (44认同)
  • @MikeLyons非常确定这个问题实际上没有改变 - 没有编辑历史. (8认同)
  • 当我想升级一个包(例如 Django)时,我在我的 requirements.txt 文件中更改版本,然后运行`pip install -r /path/to/requirements.txt`。这会检测更改,升级包,并保留其他所有内容。 (3认同)
  • @FlorentChatterji我一直想知道。谢谢! (2认同)
  • 虽然这通常有效,但有一些微妙之处会导致它失败。如果“requirements.txt”中的任何软件包安装失败,则不会安装任何软件包。如果所需模块在安装过程中导入依赖项(而不是仅仅将其列为需求),即使该依赖项在依赖项列表中位于它之前,它也会失败,从而导致所有模块失败。在安装过程中导入依赖模块可能是一个错误,但也可能出乎意料的是,“requirements.txt”中列出的依赖项不是按顺序安装的,而是一次性安装的。 (2认同)

cod*_*ape 686

这对我有用:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages
Run Code Online (Sandbox Code Playgroud)

--no-index- 忽略包索引(仅查找--find-linksURL).

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

  • **来自命令pip的`--no-index`的信息帮助安装**`--no-index`忽略包索引(仅查看`--find-links` URL).**来自命令pip的`--find-links`的信息帮助安装**`-f`,`--find-links <url>`如果是html文件的URL或路径,则解析链接到档案.如果是本地路径或文件:// url这是一个目录,那么在目录列表中查找存档. (7认同)
  • // ,这可能是一个非常优雅的解决方案,特别是考虑到与供应商的永恒斗争:http://bitprophet.org/blog/2012/06/07/on-vendorizing/ (2认同)
  • 请注意:只要“requirements.txt”中没有“git+ssh”要求,这就可以工作。对于 `git+ssh` pip 仍会尝试获取包 (2认同)

Aar*_*ier 122

对于virtualenv来安装requirements.txt文件中的所有文件.

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

  • 为了Google,"pyenv virtualenv pip install requirements.txt not working"... (3认同)
  • 你如何“激活你的virtualenv”? (2认同)

小智 54

我遇到了类似的问题.我试过这个:

pip install -U -r requirements.txt 
Run Code Online (Sandbox Code Playgroud)

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

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

sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk
Run Code Online (Sandbox Code Playgroud)

我不知道这对你有帮助.


Py_*_*ion 26

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

pip install --help
Run Code Online (Sandbox Code Playgroud)

我们可以找到选项'-r'

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

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

在此输入图像描述

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

  • "阅读手册"答案没有帮助. (9认同)

Gir*_*Vas 18

首先,创建一个虚拟环境。

在 Python 3.6 中

virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>
Run Code Online (Sandbox Code Playgroud)

在 Python 2.7 中

virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>
Run Code Online (Sandbox Code Playgroud)

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

source <path/to/new/virtualenv>/bin/activate
pip install -r <path/to/requirement.txt>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。对于 Windows 用户,要激活环境,请使用此命令:`&lt;path-to-virtualenv&gt;/Scripts/activate.bat`。要停用环境,请使用:`&lt;path-to-virtualenv&gt;/Scripts/deactivate.bat`。 (2认同)

Jad*_*eda 16

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

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

$ pip install --download <DIR> -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt
Run Code Online (Sandbox Code Playgroud)


Saf*_*wan 16

简短答案

pip install -r /path/to/requirements.txt
Run Code Online (Sandbox Code Playgroud)

或其他形式:

python -m pip install -r /path/to/requirements.txt
Run Code Online (Sandbox Code Playgroud)

说明

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

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

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

cat requirements.txt | xargs -n 1 pip install
Run Code Online (Sandbox Code Playgroud)

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

cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
Run Code Online (Sandbox Code Playgroud)


Cod*_*jay 14

在 Windows 上使用这个

pip install -r /path/to/requirements.txt 
Run Code Online (Sandbox Code Playgroud)

在linux电脑上我们有python2和python3所以大部分时间pip被认为是

Python2

pip install -r /path/to/requirements.txt 
Run Code Online (Sandbox Code Playgroud)

蟒蛇3

pip3 install -r /path/to/requirements.txt
Run Code Online (Sandbox Code Playgroud)


MD *_*YON 11

  • 创建虚拟环境python3 -m venv virtual-env(对于Windows使用python而不是python3)
  • 激活您的虚拟环境source virtual-env/bin/activate
  • 现在安装要求pip install -r requirements.txt


Bru*_*sky 10

我使用了许多系统,这些系统已被开发人员"按照他们在互联网上找到的指示"进行了处理.您pip和您python没有查看相同的路径/站点包,这是非常常见的.出于这个原因,当我遇到奇怪时,我开始这样做:

$ 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)
Run Code Online (Sandbox Code Playgroud)

这是一个快乐的系统.

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

$ 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
Run Code Online (Sandbox Code Playgroud)

它是不开心的因为pip是(python3.6和)使用/usr/local/lib/python3.6/site-packageswhile python是(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
Run Code Online (Sandbox Code Playgroud)

你听说过,"如果没有破产,不要试图解决它." DevOps的版本是,"如果你没有打破它,你可以解决它,不要试图解决它."


Sam*_*mau 9

使用pip3 install -r requirements.txt 但请确保requirements.txt文件已从源中提取并且未添加到.gitignore


小智 8

尝试这个

python -m pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

  • 应该有一个解释。 (4认同)
  • 简单有效的解决方案。 (2认同)

jan*_*777 7

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

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

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

virtualenv -p python3 myenv
Run Code Online (Sandbox Code Playgroud)

使用以下方法激活环境:

source myenv/bin/activate
Run Code Online (Sandbox Code Playgroud)

现在,我使用以下命令安装了requirements.txt:

pip3 install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

安装成功,我能够导入模块。


小智 7

pip install --user -r requirements.txt 
Run Code Online (Sandbox Code Playgroud)

或者

pip3 install --user -r requirements.txt 
Run Code Online (Sandbox Code Playgroud)


Lor*_*tti 7

在 Windows 中,如果您有,这可能会导致与格式相关的路径问题较少

c:\文件夹\子文件夹\requirements.txt

cd c:\folder\subfolder 
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)