首页 文章

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

提问于
浏览
750

这是问题所在

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

9 回答

  • 46

    通常,您需要从本地存档快速安装,而无需探测PyPI .

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

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

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

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

    我有类似的问题 . 我试过这个:

    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
    

    我不知道这对你有帮助 .

  • 105

    对于virtualenv来安装requirements.txt文件中的所有文件 .

    • cd到requirements.txt所在的目录

    • 激活你的virtualenv
      在你的shell中

    • 运行: pip install -r requirements.txt

  • 22

    我使用了很多被开发人员搞砸的系统"following directions they found on the internet" . 您的 pippython 不会查看相同的路径/站点包,这是非常常见的 . 出于这个原因,当我遇到奇怪时,我开始这样做:

    $ 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-packagespython 是(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的版本是,“如果你没有打破它,你可以解决它,不要试图解决它 . ”

  • 0

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

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

    这里, -r--requirement 的缩写形式,它要求 pip 从给定的 requirements 文件安装 .

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

    安装可用软件包的一种解决方法是逐个安装列出的软件包 . 使用以下命令 . 将显示红色警告,通知您有关不可用的包裹 .

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

    这对我有用:

    $ 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是目录,则在目录列表中查找存档 .

  • 10

    Installing requirements.txt file inside virtual env with python 3:

    我遇到过同样的问题 . 我试图在虚拟环境中安装requirements.txt文件 . 我找到了解决方案 .

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

    virtualenv -p python3 myenv
    

    使用以下方法激活环境:

    source myenv/bin/activate
    

    现在我使用以下方法安装了requirements.txt:

    pip3 install -r requirements.txt
    

    安装成功,我能够导入模块 .

  • 5
    pip install -r requirements.txt
    

    有关详细信息,请查看帮助选项 .

    pip install --help
    

    我们可以找到选项'-r'

    -r, - required从给定的需求文件安装 . 此选项可以多次使用 .

    有关一些常用的pip安装选项的更多信息:(这是pip install命令的帮助选项)

    enter image description here

    以上是完整的选项集 . 请使用pip install --help获取完整的选项列表 .

相关问题