有时我从github下载python源代码,不知道如何安装所有的依赖项。如果没有requirements.txt文件,我必须手工创建它。 问题是: 给定python源代码目录,是否有可能从导入部分自动创建requirements.txt ?
当前回答
我盲目地遵循公认的使用答案 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)
其他回答
我盲目地遵循公认的使用答案 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)
这个简单的任务在Python中如此复杂,真是令人惊叹。下面是我认为最好的自动完成的方法。
你需要两个工具:
1. pipreqs
Pip3安装pipreqs
Pipreqs会检查你的项目,只安装项目使用的包。而不是像pip freeze那样在python环境中执行所有包。
但这种方法有一个问题。它不安装子包。
例如,您的项目使用pandas==1.3.2。Pandas本身在其他包中使用numpy==1.21.2。但是pipreqs本身并不在requirements .txt中编写子包(即numpy)
这就是您需要将pipreqs与第二个工具结合使用的地方。
pip-tools
Pip3安装pip-tools
Pip-tools将接受需求中的包。并生成带有所有子包的requirements.txt。例如,如果你有 Pandas ==1.3.2的需求。在,pip-tools将生成
Numpy ==1.21.2 # via pandas in requirements.txt。
但是您需要手动在requirements.in中添加包。这很容易出错,你可能会偶尔忘记这样做。
在这里可以使用第一个工具。
但是这两个工具都是根据requirements.txt编写的。那么如何解决这个问题呢?
使用pipreqs的——savepath来写入需求。,而不是默认的requirements.txt。
一次命令就完成;只做
pipreqs——savepath =需求。在&& pip-compile
好了。现在您不需要担心手动维护包,并且您的requirements.txt将包含所有子包,因此您的构建是确定的。
博士TL;
Pip3安装pipreqs Pip3安装pip-tools
使用下面的代码构建确定性的requirements.txt
pipreqs——savepath =需求。在&& pip-compile
在我的例子中,我使用Anaconda,所以在我的环境中从conda终端运行以下命令解决了这个问题,并自动为我创建了这个requirements.txt文件:
conda list -e > requirements.txt
这是从这个Github链接pratos/condaenv.txt
如果看到错误,并且您正在使用anaconda,请尝试使用.yml选项:
conda env export > <environment-name>.yml
供其他人使用该环境,或者如果您正在另一台机器上创建新环境:
conda env create -f <environment-name>.yml
.yml选项在这里找到
Python 3的最佳方式是:
pip3 freeze > requirements.txt
这对我很管用……
Pipenv用户可以从项目的Pipfile中生成require .txt文件:
pipenv lock --requirements
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录