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

1788 投票
17 回答
2757146 浏览
提问于 2025-04-17 00:30

这是一个问题:

我有一个 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
...

我有一个本地的存档目录,里面包含了所有的包和其他东西。

我创建了一个新的 虚拟环境,使用了:

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

但是后来检查发现,根本没有一个包安装成功。我无法导入这些包,而且在我的虚拟环境的 site-packages 目录里也找不到它们。那么到底出了什么问题呢?

17 个回答

191

要让virtualenv安装requirements.txt文件中的所有文件,可以按照以下步骤操作:

  1. 进入存放requirements.txt文件的文件夹
  2. 激活你的virtualenv环境
  3. 在命令行中运行:pip install -r requirements.txt
2277

这个方法适合所有人:

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

解释:

-r, --requirement < 文件名 >

从指定的需求文件中安装。这项选项可以多次使用。

1117

这个方法对我有效:

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

--no-index - 忽略软件包索引(只查看 --find-links 后面的链接)。

-f, --find-links <URL> - 如果 <URL> 是一个网址或者一个HTML文件的路径,那么就会解析这个链接,寻找存档文件。如果 <URL> 是一个本地路径或者一个指向目录的 file:// 链接,那么就会在这个目录下查找存档文件。

撰写回答