【问题标题】:How can I install packages using pip according to the requirements.txt file from a local directory?如何根据本地目录中的 requirements.txt 文件使用 pip 安装软件包?
【发布时间】:2011-11-05 18:08:18
【问题描述】:

问题来了:

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

【问题讨论】:

标签: python virtualenv pip


【解决方案1】:

这适用于所有人:

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

【讨论】:

  • 我意识到这个答案并没有解决最初的问题,但它回答了我在 Google 上找到它时遇到的问题......
  • 对于那些想知道他们键入什么的人来说,命令中的 -r 仅表示“从需求文件安装”,并且是 --requirement 的快捷方式
  • 当我想升级一个包(例如 Django)时,我在我的 requirements.txt 文件中更改版本,然后运行pip install -r /path/to/requirements.txt。这会检测到更改,升级包,然后不理会其他所有内容。
  • 点冻结> requirements.txt
  • 虽然这通常有效,但一些细微之处使其失败。如果requirements.txt 中的软件包安装失败,则不会安装任何软件包。如果一个必需的模块在其安装过程中导入了一个依赖项(而不是仅仅将其列为需求),即使该依赖项在依赖项列表中位于它之前,它也会失败,从而导致所有模块失败。在安装过程中导入依赖模块可能是一个错误,但requirements.txt 中列出的依赖项不是按顺序安装,而是一次安装,也可能出乎意料。
【解决方案2】:

这对我有用:

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

【讨论】:

  • 来自命令 pip help install 的--no-index 的信息 --no-index 忽略包索引(仅查看--find-links URL)。 来自命令 pip help install 的--find-links 的信息 -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 命令。
  • 我在激活的 venv 环境中尝试了这个python -m pip install -r requirements.txt。东西安装得很顺利,但是当我执行 pip list 时,当我处于活动的 venv 甚至停用 venv 后,它不会显示该软件包。也无法使用该软件包。不知道这里出了什么问题
  • 请注意:只要requirements.txt 中没有git+ssh 要求,这将起作用。对于git+ssh pip 仍然会尝试获取包
【解决方案3】:

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

  1. cd 到requirements.txt所在目录
  2. 激活您的虚拟环境
  3. 在你的 shell 中运行:pip install -r requirements.txt

【讨论】:

  • “pyenv virtualenv pip install requirements.txt not working”为了谷歌......
  • pip3 install -r requirements.txt 在 venv 中为我工作
  • pip3 install -r requirements.txt
【解决方案4】:

我遇到了类似的问题。我试过这个:

    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

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

【讨论】:

    【解决方案5】:

    用途:

    pip install -r requirements.txt
    

    更多详情,请查看帮助选项:

    pip install --help
    

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

    -r, --requirement 从给定的需求文件安装。这个选项可以 多次使用。

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

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

    【讨论】:

      【解决方案6】:

      简答

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

      或其他形式:

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

      说明

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

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

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

      cat requirements.txt | xargs -n 1 pip install
      

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

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

      【讨论】:

        【解决方案7】:

        首先,创建一个虚拟环境。

        在 Python 3.6 中

        virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>
        

        在 Python 2.7 中

        virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>
        

        然后激活环境并安装requirement.txt文件中所有可用的包。

        source <path/to/new/virtualenv>/bin/activate
        pip install -r <path/to/requirement.txt>
        

        【讨论】:

        • 谢谢。对于 windows 用户,激活环境使用这个命令:&lt;path-to-virtualenv&gt;/Scripts/activate.bat。要停用环境,请使用:&lt;path-to-virtualenv&gt;/Scripts/deactivate.bat.
        【解决方案8】:

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

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

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

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

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

        【讨论】:

        • no such option: --download
        • 在较新版本的 pip 中,pip install --download 必须是 pip download
        【解决方案9】:

        试试这个:

        python -m pip install -r requirements.txt
        

        【讨论】:

        • 解释一下。
        【解决方案10】:

        我使用的许多系统都被开发人员“按照他们在 Internet 上找到的指示”搞砸了。您的pip 和您的python 没有查看相同的路径/站点包,这是非常常见的。出于这个原因,当我遇到奇怪的事情时,我会这样做:

        $ 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

        当我想确保将要求安装到 right 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 版本是,“如果您没有破坏它并且可以解决它,请不要尝试修复它。”

        【讨论】:

          【解决方案11】:

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

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

          最初,我以这种方式创建了我的 virtualenv:

          virtualenv -p python3 myenv
          

          使用以下方法激活环境:

          source myenv/bin/activate
          

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

          pip3 install -r requirements.txt
          

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

          【讨论】:

          • 我在虚拟环境中安装需求文件时遇到了这个问题。我现在修改了我的回复来解决这个问题
          • 在 Windows 上使用 Anaconda Python 3.6,我不得不这样做 virtualenv -p python myenv, myenv\Scripts\activate.bat, pip install -r requirements.txt
          • 实际上,相反,这似乎是确实回答关于在requirements.txt 中将本地定义的deps 安装到virtualenv 的问题的唯一答案。除非我错过了什么?无论如何,谢谢!
          【解决方案12】:
          pip install --user -r requirements.txt 
          

          pip3 install --user -r requirements.txt 
          

          【讨论】:

          • 是否可以在requirements.txt 文件中指定--user
          • 解释一下。
          【解决方案13】:
          • 创建虚拟环境python3 -m venv virtual-env(对于windows使用python而不是python3)
          • 激活您的虚拟环境source virtual-env/bin/activate
          • 现在安装要求pip install -r requirements.txt

          【讨论】:

            【解决方案14】:

            我已经通过运行以下命令解决了:

            py -m pip install ./requirements.txt
            

            上述命令将为 Django 项目安装所有依赖项和库。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-06-16
              • 1970-01-01
              • 2022-10-06
              • 1970-01-01
              • 2022-08-16
              • 2016-09-23
              • 2013-07-21
              相关资源
              最近更新 更多