Python项目生成依赖文件
![](https://cdn.randench.cn/image/24/11/ccf84cec49f74b3e.png)
Python项目生成依赖文件
RandomEnch写在前面
在完成Python项目时,我们一般需要编写一个requirements.txt
文件,该文件包含了项目所依赖的库的名称和版本号,方便后续部署项目。但是如果项目使用了较多的第三方库,手动编写该文件会非常麻烦,这时我们可以借助一些工具来自动生成该文件。本文介绍了几种常用的自动生成依赖文件的方法。
1. pip freeze
Python的 pip
包管理工具提供了 freeze
命令,可以将当前环境中安装的包信息写入 requirements.txt
文件。
该命令会将所有安装的包都写入requirements.txt文件,包括系统自带的包和第三方包的依赖包。如果项目中有有第三方包依赖了很多其他的第三方包,那么这些依赖包都会列出来,不利于包管理。
1 | pip freeze > requirements.txt |
或者
1 | python -m pip freeze > requirements.txt |
推荐使用第二种方式,使用python调用而不是直接调用pip命令,因为第一种方式可能会出现版本冲突或者其他问题。
生成完后,可能还需要修改和删除里面不必要的安装包。因为很多安装包都是有依赖的,我们把要的留下就可以了。
2. pipreqs
pipreqs
是一个自动生成 requirements.txt
文件的工具,它会自动分析项目中的导入语句,然后生成一个 requirements.txt
文件。
此方法生成的 requirements.txt
文件会自动排除系统自带的包和第三方包的依赖包,但是速度较慢,在使用虚拟环境时可能会出现问题。
1 | pip install pipreqs |
然后在项目目录下运行:
1 | pipreqs . |
可选参数:--force
强制重新生成,--upgrade
更新库的版本号。
3. poetry
如果你使用 Poetry
管理项目,那么可以使用 Poetry 的 export
命令生成 requirements.txt
文件。
1 | pip install poetry |
1 | poetry export --format requirements.txt --output requirements.txt --without-hashes |
这个命令将从 poetry.lock
文件中生成一个标准的 requirements.txt
文件,其中包含项目的所有依赖项及其版本信息。--without-hashes
选参数表示不在 requirements.txt
文件中包含安装包时的哈希信息,这样可以使得 requirements.txt
文件更容易被共享。
如果只想生成开发环境的依赖(例如测试依赖),可以使用以下命令:
1 | poetry export --dev --format requirements.txt --output requirements.txt --without-hashes |
不过在使用 Poetry
时,最好使用 poetry.lock
文件而不是 requirements.txt
文件来确保安装相同版本的依赖项。poetry.lock
包含了更详细的依赖关系和版本信息。
4. pipenv
pipenv
是一个包含了pip
和virtualenv
并补全了两者一些不足之处的包管理工具,可以帮助我们管理Python项目的依赖,和 Poetry 类似,它也生成 requirements.txt
文件。
1 | pip install pipenv |
然后在项目目录下运行:
1 | pipenv lock -r > requirements.txt |
这将从 Pipfile.lock
中生成 requirements.txt
文件。
5. PyCharm
在PyCharm中,提供了一个生成requirements.txt
文件的功能,可以准确迅速地生成依赖文件。
具体位置:Tools
-> Sync Python Requirements