【问题标题】:pip: install dependencies of dependenciespip:安装依赖项的依赖项
【发布时间】:2016-08-21 19:29:54
【问题描述】:

我想手动安装我正在编写的 Python 包的所有要求。为此,我创建了文件requirements.txt 并逐行添加了依赖项:

$ cat requirements.txt
meshio
numpy

运行时

$ pip install -r requirements.txt

这两个包都安装好了,但我注意到meshio的依赖项不是(即requirements.txt中列出的任何内容)。不足为奇,pip 是怎么知道的?

有没有用 pip 安装整个依赖树的机制?

【问题讨论】:

    标签: python dependencies pip


    【解决方案1】:

    我不确定这是否是您需要的。但这就是我解决这个问题的方法。我为我的每个 python 项目创建了一个虚拟环境

    cd my_project_folder
    virtualenv venv # choose the python interpreter you need ;)
    source venv/bin/activate
    

    然后我为项目安装所有需要的包。

    pip install <what ever packages you need>
    

    如果你需要创建一个 requirements.txt 你可以使用这个命令

    pip freeze > requirements.txt  # including the installed version of each package
    

    要离开虚拟环境,只需输入deactivate。希望这对您有所帮助...

    这个也有详细描述here

    【讨论】:

      【解决方案2】:

      您可能对pip-tools 感兴趣,这是一个python 包,可用于构建考虑所有底层依赖项的requirements.txt 文件。可以通过pip安装:

      pip install --upgrade pip  # pip-tools needs pip>=6.
      pip install pip-tools
      

      安装后,您可以使用pip-compile 命令生成您的需求文件。例如,假设您从事 Flask 项目。您必须执行以下操作:

      将以下行写入文件:

      Flask
      

      运行pip-compile &lt;your-file&gt;。它将生成您的 requirements.txt,并固定所有依赖项。您可以重新运行pip-compile 来更新软件包。您的输出文件将如下所示:

      #
      # This file is autogenerated by pip-compile
      # Make changes in requirements.in, then run this to update:
      #
      #    pip-compile <your-file>
      #
      flask==0.10.1
      itsdangerous==0.24        # via flask
      jinja2==2.7.3             # via flask
      markupsafe==0.23          # via jinja2
      werkzeug==0.10.4          # via flask
      

      【讨论】:

      • 我已经在使用 pip-tools 进行开发,我没想到它会在生产中安装东西。但它派上用场了!非常感谢。
      【解决方案3】:

      原来要安装依赖包,包需要列出其依赖项

      install_requires=[
          'numpy',
          'pyyaml'
      ],
      

      setup.py 中作为setup() 的一部分,而不是在requirements.txt 中。

      【讨论】:

      • 如果存在传递依赖,为了保证pip得到所有的正确版本,你需要分析所有的setup.py文件,pip-tools可以帮你搞定
      猜你喜欢
      • 2023-04-03
      • 2021-10-05
      • 2018-09-27
      • 2011-01-20
      • 2021-05-29
      • 2015-04-01
      • 2015-01-24
      • 2020-10-04
      • 2013-11-20
      相关资源
      最近更新 更多