Python 中的依赖
Python 需要维护项目相关的依赖包。通常我们会在项目的根目录下放置一个 requirements.txt 文件,用于记录所有依赖包和它的确切版本号。
requirements.txt 的内容长这样:
alembic==1.0.10
appnope==0.1.0
astroid==2.2.5
attrs==19.1.0
backcall==0.1.0
bcrypt==3.1.6
bleach==3.1.0
cffi==1.12.3
Click==7.0
decorator==4.4.0
defusedxml==0.6.0
entrypoints==0.3
如何使用?
那么 requirements.txt 究竟如何使用呢?
当我们拿到一个项目时,首先要在项目运行环境安装 requirements.txt 所包含的依赖:
pip install -r requirements.txt
当我们要把环境中的依赖写入 requirements.txt 中时,可以借助 freeze 命令:
pip freeze >requirements.txt
环境混用怎么办?
在导出依赖到 requirement.txt 文件时会有一种尴尬的情况。
你的本地环境不仅包含项目 A 所需要的依赖,也包含着项目 B 所需要的依赖。此时我们要如何做到只把项目 A 的依赖导出呢?
pipreqs 可以通过扫描项目目录,帮助我们仅生成当前项目的依赖清单。
通过以下命令安装:
pip install pipreqs
运行(在项目根目录下):
pipreqs ./
pipreqs ./ --encoding utf8
(推荐,会直接生成requirements.txt文件)
==============================================================
pipreqs
Why not pip freeze?
- pip freeze only saves the packages that are installed with pip install in your environment.
- pip freeze saves all packages in the environment including those that you don’t use in your current project (if you don’t have virtualenv).
- and sometimes you just need to create requirements.txt for a new project without installing modules.