如何根据本地目录中的requirements.txt来安装软件包?

这是问题

我有一个如下所示的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 ... 

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

我已经创build了一个新的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目录中找不到任何软件包。 那么出了什么问题?

这适用于我:

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

--no-index – 忽略包索引(仅查看 – 查找--find-links URL)。

-f, --find-links <URL> – 如果一个html文件的URL或path,然后parsing链接到档案。 如果一个本地path或file:// URL是一个目录,然后在目录列表中查找存档。

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

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

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

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

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

 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 

我不知道这是否会帮助你。

 pip install -r requirements.txt 

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

 pip install --help 

我们可以find选项'-r'

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

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

在这里输入图像描述

另外上面是一整套选项。 请使用pip install –help获取完整的选项列表。

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

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

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

然后,使用–find-links–no-index

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

我使用了很多被开发人员“按照他们在互联网上find的指示”分类的系统。 你的pip和你的python没有看同样的path/站点包,这是非常常见的。 出于这个原因,当我遇到奇怪时,我开始这样做:

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

这是一个快乐的系统

下面是一个不愉快的系统 。 (或者至less这是一个令人不快的愚蠢无知的系统。)

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

你听说过,“如果没有损坏,不要试图修复它。” DevOps版本是:“如果你没有破解它,你可以解决它,不要试图修复它。”

用PYTHON3安装虚拟环境:

我遇到过同样的问题。 上述解决scheme都不适合我。 我find了解决scheme。

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

 sudo apt-get install python3-pip sudo pip3 install virtualenv virtualenv myenv 

它没有工作。 我能够安装requirements.txt,但不能导入模块。 所以我试了,

 virtualenv -p python3 myenv 

使用以下命令激活环境:

 source myenv/bin/activate 

现在我使用以下方法安装requirements.txt:

 pip3 install -r requirements.txt 

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