列出Python中的依赖项

Rol*_*Bly 30 python

列出在其他地方部署工作项目所需的所有依赖项(比如说在不同的操作系统上)的最有效方法是什么?

Python 2.7,Windows开发环境,不是每个项目使用virtualenv,而是全局开发环境,根据需要安装库,愉快地从一个项目跳到下一个项目.

我已经跟踪了我必须为给定项目安装的大多数(不确定所有)库.我没有跟踪自动安装它们的任何子依赖项.做pip freeze列表,以及所有其他已安装的库.

有没有办法列出您需要安装的内容,不多也不少,以便部署项目?

注意:无法想象这已经没有Q + A,但我找不到它.

编辑鉴于以下答案,一些澄清.我的项目由一堆模块(我写的)组成,每个模块都有一堆imports.我是否应该将所有模块中的所有导入复制粘贴到一个文件中,排序消除重复,并从标准库中丢弃所有(以及我怎么知道它们)?或者,还有更好的方法?这就是问题所在.

Hai*_*ang 55

pipreqs解决了这个问题.它生成项目级的 requirements.txt文件.

安装pipreqs: pip install pipreqs

  1. 生成项目级requirements.txt文件: pipreqs /path/to/your/project/
  2. 需求文件将保存在/path/to/your/project/requirements.txt中

如果你想阅读更多的优势pipreqs超过pip freeze,读它从这里

  • 问题要求**列出部署工作项目所需的所有依赖项**.后来它问"有没有办法列出你需要安装什么,**不再**,不能少,部署项目?".这显然是在询问生产,而不是发展!我还建议使用`requirement.txt`来固定开发环境的pkg版本 - 但这不是问题所在. (3认同)
  • 我想这就是你所指的:https://packaging.python.org/requirements/ (3认同)
  • `pipreqs` 对我不起作用。我有一个导入 pdfminer 的脚本(`from pdfminer.pdfpage import PDFPage`)但要求,.txt 仍为空;pdfminer 应该被列出。 (3认同)

900*_*000 16

扫描您的import陈述.您可能只导入您明确要导入的内容,而不是依赖项.

制作一个像那样的列表pip freeze,然后创建并激活virtualenv.

pip install -r your_list,并尝试在virtualenv中运行您的代码.注意任何ImportError异常,将它们与包匹配,然后添加到列表中.重复直到您的代码运行没有问题.

现在,您有一个要pip install在部署站点上提供的列表.

这是非常手动的,但不需要外部工具,并强制您确保代码运行.(运行测试套件作为检查很好,但还不够.)


Ven*_*ari 11

在您的终端类型上:

pip install pipdeptree
cd <your project root>
pipdeptree
Run Code Online (Sandbox Code Playgroud)


Mos*_*ael 5

您可以简单地使用pipreqs,使用以下命令安装它:

pip install pipreqs
Run Code Online (Sandbox Code Playgroud)

然后,pipreqs .在文件目录中键入:。将为您创建一个名为“requirements”的文本文件,如下所示:

numpy==1.21.1
pytest==6.2.4
matplotlib==3.4.2
PySide2==5.15.2
Run Code Online (Sandbox Code Playgroud)