有时我从github下载python源代码,不知道如何安装所有的依赖项。如果没有requirements.txt文件,我必须手工创建它。 问题是: 给定python源代码目录,是否有可能从导入部分自动创建requirements.txt ?


当前回答

这不是一个完整的解决方案,但可能有助于在Linux上编译一个候选列表。

grep --include='*.py' -rhPo '^\s*(from|import)\s+\w+' . | sed -r 's/\s*(import|from)\s+//' | sort -u > requirements.txt

其他回答

Pipenv用户可以从项目的Pipfile中生成require .txt文件:

pipenv lock --requirements

你可以使用下面的代码来生成一个requirements.txt文件:

pip install pipreqs

pipreqs /path/to/project

更多有关pipreqs的信息可以在这里找到。

有时您会遇到pip冻结,但这会保存环境中的所有包,包括那些您在当前项目中不使用的包。

创建requirement.txt:

对于Python 3版本命令为:

pip3 freeze > requirements.txt

对于Python 2版本命令为:

pip freeze > requirements.txt 

让安装:

对于Python 3版本命令为:

pip3 install -r requirements.txt

对于Python 2版本命令为:

pip install -r requirements.txt

简单的python方式

要获得标准REQUIREMENTS .txt文件中所有REQUIREMENTS的列表,您可以使用以下命令。

pip freeze > requirements.txt

现在,这将自动创建一个标准需求文件,其中包含安装在相应版本旁边的所有包。

终端打印精美

如果你只是想在终端上得到一个漂亮的打印,你可以使用下面的方法。

pip list

它以漂亮的打印格式列出了所有已安装的包。

自定义的依赖

如果你有一个项目文件夹,比如Github Repo,你想为项目获得一个自定义的requirements.txt,你可以使用下面的包。 https://pypi.org/project/pipreqs/ pipreqs

使用

$ pipreqs /home/project/location
Successfully saved requirements file in /home/project/location/requirements.txt

requirements.txt的内容

wheel==0.23.0
Yarg==0.1.9
docopt==0.6.2

我盲目地遵循公认的使用答案 Pip3冻结> requirements.txt

它生成了一个巨大的文件,其中列出了整个解决方案的所有依赖项,这不是我想要的。

因此,您需要弄清楚您试图生成什么样的requirements.txt。

如果您需要一个包含所有依赖项的requirements.txt文件,那么可以使用pip3

pip3 freeze > requirements.txt

但是,如果您想生成一个最小的requirements.txt,它只列出您需要的依赖项,那么可以使用pipreqs包。如果您在项目中的每个组件级别都有大量的requirements.txt文件,而在解决方案范围级别上没有一个文件,那么这将特别有用。

pip install pipreqs
pipreqs [path to folder]
e.g. pipreqs .
     pipreqs . --force --ignore=tests (Overwrites exisiting requirements.txt, ignores the tests directory)