这是问题所在
我有一个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目录中找不到任何软件包。那么出了什么问题?
这对我有用:
$ 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,请在目录列表中查找档案。
在信息
--no-index
从命令PIP帮助安装--no-index
忽略包指数(只盯着--find-links
网址代替)。 有关--find-links
命令pip help install的信息-f
,--find-links <url>
如果是html文件的url或路径,请解析以获取指向归档文件的链接。如果是目录的本地路径或file:// url,请在目录列表中查找档案。//,这可能是一个非常优雅的解决方案,尤其是考虑到与供应商的永恒斗争:bitprophet.org/blog/2012/06/07/on-vendorizing
一种警告是您可能
pip install <some_module>
不使用requirements.txt
但不会更新requirements.txt
。一种替代方法可能是更新docker,以便它列出为安装依赖项而运行的所有pip install命令。我
python -m pip install -r requirements.txt
在激活的venv环境中尝试了此操作。事情安装顺利,但是当我执行pip list时,当我处于活动venv甚至停用venv之后,它不会显示该软件包。也无法使用该软件包。不知道这是怎么了您确定
python
引用了激活环境的python可执行文件($ which python
)吗?