这是问题所在
我有一个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目录中找不到任何包。出了什么问题?
这对我有用:
$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages
--no-index
- 忽略包索引(仅查看--find-links
URL)。
-f, --find-links <URL>
- 如果是html文件的URL或路径,则解析链接到档案。如果是本地路径或file://
URL是目录,则在目录列表中查找存档。
使用python 3在virtual env中安装requirements.txt文件:
我遇到过同样的问题。我试图在虚拟环境中安装requirements.txt文件。我找到了解决方案。
最初,我以这种方式创建了我的虚拟环境:
virtualenv -p python3 myenv
使用以下方法激活环境:
source myenv/bin/activate
现在我使用以下命令安装了requirements.txt:
pip3 install -r requirements.txt
安装成功,我能够导入模块。
我已经阅读了上述内容,意识到这是一个老问题,但它完全没有解决,仍然是我的谷歌搜索结果的顶部,所以这里的答案适用于所有人:
pip install -r /path/to/requirements.txt
对于virtualenv来安装requirements.txt文件中的所有文件。
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
我不知道这对你有帮助。
通常,您需要从本地存档快速安装,而无需探测PyPI。
首先,下载满足您要求的档案:
$ pip install --download <DIR> -r requirements.txt
然后,使用–find-links
和–no-index
安装:
$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt
我使用了许多系统,这些系统已被开发人员“按照他们在互联网上找到的指示”进行了处理。你的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-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的版本是,“如果你没有打破它,你可以解决它,不要试图解决它。”
试试这个
python -m pip install -r requirements.txt
简短的回答
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