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

How to install packages using pip according to the requirements.txt file from a local directory?

这就是问题所在

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

1
2
3
4
5
6
7
8
9
10
11
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

1
bin/virtualenv testing

激活后,我尝试根据本地归档目录中的requirements.txt安装包。

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

我得到了一些输出,似乎表明安装良好

1
2
3
4
5
6
7
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的站点包目录中找不到任何包。那出什么事了?


我已经阅读了以上内容,意识到这是一个老问题,但它完全没有解决,仍然是我的谷歌搜索结果的顶端,所以这里有一个适用于所有人的答案:

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


这对我很有用:

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

--no-index—忽略包索引(只查看--find-linksURL)。

-f, --find-links —如果是指向HTML文件的URL或路径,则解析指向存档的链接。如果本地路径或file://url是一个目录,那么在目录列表中查找归档文件。


以便virtualenv安装requirements.txt文件中的所有文件。

  • CD到requirements.txt所在的目录
  • 激活virtualenv
  • 运行:你的外壳中的pip install -r requirements.txt

  • 我也有类似的问题。我试过这个:

    1
    pip install -U -r requirements.txt

    (-u=如果已安装,则更新)

    但问题仍然存在。我意识到一些用于开发的通用库被遗漏了。

    1
    sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk

    我不知道这是否对你有帮助。


    1
    pip install -r requirements.txt

    有关详细信息,请检查帮助选项。

    1
    pip install --help

    我们可以找到选项-R'

    -r, --requirement Install from the given requirements file. This option can be
    used multiple times.

    有关一些常用PIP安装选项的详细信息:(这是PIP安装命令的帮助选项)

    enter image description here

    此外,以上是一整套选项。请使用pip install--help获得完整的选项列表。


    通常,您需要从本地存档中快速安装,而不需要探测pypi。

    首先,下载满足您要求的档案:

    1
    $ pip install --download <DIR> -r requirements.txt

    然后,使用–find-links–no-index安装:

    1
    $ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt


    我使用了很多被开发者"按照他们在互联网上找到的方向"所破坏的系统。您的pippython不使用相同的路径/站点包是非常常见的。因此,当我遇到奇怪的事情时,我就开始这样做:

    1
    2
    3
    4
    5
    6
    7
    8
    $ 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)

    这是一个快乐的系统。

    下面是一个不愉快的系统。(或者至少这是一个幸福地无知的系统,导致其他人不快乐。)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $ 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上安装需求时,我会这样做:

    1
    2
    3
    4
    5
    6
    7
    $ 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的版本是,"如果你没有破坏它,你可以解决它,就不要尝试修复它。"


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

    这里,-r--requirement的简称,它要求pip从给定的requirements文件安装。

    pip只有在检查requirements文件中列出的所有项目的可用性后才开始安装,即使一个requirement不可用,也不会开始安装。

    安装可用软件包的一个解决方法是逐个安装列出的软件包。为此,请使用以下命令。将显示红色警告,通知您不可用的软件包。

    1
    cat requirements.txt | xargs -n 1 pip install

    要忽略注释(以#开头的行)和空行,请使用:

    1
    cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install

    试试这个

    1
    python -m pip install -r requirements.txt


    使用python 3在虚拟环境中安装requirements.txt文件:

    我也有同样的问题。我试图在虚拟环境中安装requirements.txt文件。我找到了解决办法。

    最初,我用这种方式创建了我的虚拟环境:

    1
    virtualenv -p python3 myenv

    使用以下方法激活环境:

    1
    source myenv/bin/activate

    现在我安装了requirements.txt,使用:

    1
    pip3 install -r requirements.txt

    安装成功,我可以导入模块。