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


1082

这是问题所在

我有一个require.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目录中找不到任何软件包。那么出了什么问题?


4
您是否尝试过使用--no-index它甚至不看PyPI?
雨果·塔瓦雷斯

2
您已截取错误消息。它通常在底部附近。
bukzor 2014年

您可以使用文件路径而不是包名称,这意味着您必须更改requirements.txt文件,但保持pip install命令不变。
2014年

9
投票最多的答案(麦克·里昂的答案)甚至没有回答问题。您能接受代码正确的答案吗?
Piotr Dobrogost

Answers:


785

这对我有用:

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

--no-index-忽略软件包索引(仅查看--find-linksURL)。

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


7
在信息 --no-index从命令PIP帮助安装 --no-index忽略包指数(只盯着--find-links网址代替)。 有关 --find-links命令pip help install的信息 -f--find-links <url>如果是html文件的url或路径,请解析以获取指向归档文件的链接。如果是目录的本地路径或file:// url,请在目录列表中查找档案。
AWrightIV

1
//,这可能是一个非常优雅的解决方案,尤其是考虑到与供应商的永恒斗争:bitprophet.org/blog/2012/06/07/on-vendorizing
Nathan Basanese

一种警告是您可能pip install <some_module>不使用requirements.txt但不会更新requirements.txt。一种替代方法可能是更新docker,以使其列出为安装依赖项而运行的所有pip install命令。
&符号

python -m pip install -r requirements.txt在激活的venv环境中尝试了此操作。事情安装顺利,但是当我执行pip list时,当我处于活动venv甚至停用venv之后,它不会显示该软件包。也无法使用该软件包。不知道这是怎么回事
Shreyan Mehta,

您确定python引用了激活环境的python可执行文件($ which python)吗?
codeape

1364

我已经阅读了上面的内容,意识到这是一个古老的问题,但它仍未完全解决,仍然位于我的Google搜索结果的顶部,因此,这是一个适用于所有人的答案:

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

284
我意识到这个答案并没有解决最初的问题,但是它回答了我在Google上找到这个问题时遇到的问题...
Jonathan

原始问题已更改-注意他现在如何使用/path/to/requirements.txt。
Mike Lyons

8
@MikeLyons非常确定问题实际上没有改变-没有编辑历史记录。
Mark Amery 2015年

48
对于那些想知道他们键入什么内容的人,命令中的-r只是表示“从需求文件安装”,并且是--requirement的快捷方式
Florent Chatterji

2
当我想升级软件包(例如Django)时,请在我的requirements.txt文件中更改版本,然后运行pip install -r /path/to/requirements.txt。这样可以检测到更改,升级程序包,然后将其他所有操作都保留下来。
用户

129

为了使virtualenv将所有文件安装在requirements.txt文件中。

  1. cd到requirements.txt所在的目录
  2. 激活您的虚拟环境
  3. 运行: pip install -r requirements.txt 在您的外壳中

3
为了Google的缘故,“ pyenv virtualenv pip install requirements.txt无法正常工作”
Jerad

它对我有用,而不是其他答案
有用

58

我有一个类似的问题。我尝试了这个:

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

我不知道这是否对您有帮助。


32
pip install -r requirements.txt

有关更多详细信息,请检查帮助选项。

pip install --help

我们可以找到选项“ -r”

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

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

在此处输入图片说明

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


26

简短答案

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

20

通常,您将需要从本地档案中快速安装,而无需探究PyPI。

首先,下载符合您要求的档案:

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

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

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

no such option: --download
Max Malysh

12

我使用了很多系统,这些系统被开发人员“遵循他们在互联网上找到的指示”所破坏。您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)

那是一个快乐的系统

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

$ 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

不高兴,因为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

您听说过,“如果它没有损坏,请不要尝试对其进行修复。” DevOps的版本是“如果您没有破坏它并且可以解决它,请不要尝试对其进行修复。”


10

首先,创建一个虚拟环境

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

9

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

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

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

virtualenv -p python3 myenv

使用以下方法激活环境:

source myenv/bin/activate

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

pip3 install -r requirements.txt

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


在虚拟环境中安装需求文件时遇到了这个问题。我现在已修改我的回复以解决此问题
janu777 '18

1
在Windows上使用Python的蟒蛇3.6,我不得不这样做virtualenv -p python myenvmyenv\Scripts\activate.batpip install -r requirements.txt
bdforbes

1
实际上,恰恰相反,这似乎回答有关将局部定义的deps安装requirements.txt到virtualenv中的部分问题的唯一答案。除非我想念什么?还是谢谢你!
davnicwil

8

尝试这个

python -m pip install -r requirements.txt

7
pip install --user -r requirements.txt 

要么

pip3 install --user -r requirements.txt 

是否可以指定--user内部requirements.txt文件?
liang
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.