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

问题描述:

问题来了:

我有一个 requirements.txt 文件,看起来像:

I have a requirements.txt file that looks like:

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

我有一个包含所有包和其他包的本地存档目录.

I have a local archive directory containing all the packages + others.

我用

bin/virtualenv testing

在激活它后,我尝试根据本地存档目录中的 requirements.txt 安装软件包.

Upon activating it, I tried to install the packages according to requirements.txt from the local archive directory.

source bin/activate
pip install -r /path/to/requirements.txt -f file:///path/to/archive/

我得到了一些似乎表明安装正常的输出:

I got some output that seems to indicate that the installation is fine:

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 目录中找不到任何包.那么出了什么问题?

But a later check revealed none of the package is installed properly. I cannot import the package, and none is found in the site-packages directory of my virtualenv. So what went wrong?

这对我有用:

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

--no-index - 忽略包索引(只查看 --find-links 网址).

--no-index - Ignore package index (only looking at --find-links URLs instead).

-f, --find-links <URL> - 如果是 HTML 文件的 URL 或路径,则解析指向档案的链接.

-f, --find-links <URL> - If a URL or path to an HTML file, then parse for links to archives.

如果本地路径或 file:// URL 是目录,则在目录列表中查找存档.

If a local path or file:// URL that's a directory, then look for archives in the directory listing.