如何根据本地目录中的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文件中安装所有文件。
- cd到requirements.txt所在的目录
- 激活你的virtualenv
- 在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-packages
而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版本是:“如果你没有破解它,你可以解决它,不要试图修复它。”
用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
安装成功,我能够导入模块。