Dar*_*her 10 pip requirements.txt
我正在尝试requirements.txt为某人生成复制我的环境。您可能知道,标准方法是
pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
我注意到这将列出所有包,包括已安装包的依赖项,这使得这个列表变得不必要。然后我浏览了一下,发现pip-chill它允许我们只列出requirements.txt.
现在,根据我的理解,当有人尝试使用 复制环境时pip install -r requirements.txt,这将自动安装已安装软件包的依赖项。
如果这是真的,这意味着使用pip-chill而不是pip生成requirements.txt. 我的问题是,是否还有其他风险可以使用pip-chill我在这里缺少的已安装软件包的依赖项?
ale*_*ria 10
我相信在构建您的 requirements.txt 时使用pip-compilefrom pip-tools是一个很好的做法。这将确保构建是可预测的和确定性的。
该pip-compile命令允许您requirements.txt从依赖项中编译文件,在setup.py或requirements.in
这是我在构建requirements.txt(如果使用requirements.in)时推荐的步骤:
$ source /path/to/venv/bin/activate
(venv)$ python -m pip install pip-tools
Run Code Online (Sandbox Code Playgroud)
# requirements.in
requests
boto3==1.16.51
Run Code Online (Sandbox Code Playgroud)
$ pip-compile --output-file=- > requirements.txt
Run Code Online (Sandbox Code Playgroud)
您的 requirements.txt 文件将包含:
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile --output-file=-
#
boto3==1.16.51
# via -r requirements.in
botocore==1.19.51
# via
# boto3
# s3transfer
certifi==2020.12.5
# via requests
chardet==4.0.0
# via requests
idna==2.10
# via requests
jmespath==0.10.0
# via
# boto3
# botocore
python-dateutil==2.8.1
# via botocore
requests==2.25.1
# via -r requirements.in
s3transfer==0.3.3
# via boto3
six==1.15.0
# via python-dateutil
urllib3==1.26.2
# via
# botocore
# requests
Run Code Online (Sandbox Code Playgroud)
您的应用程序应始终使用从生成的requirements.txt. 如果您必须更新依赖项,您只需要更新requirements.in文件并重做pip-compile。我相信这是一种比pip freeze > requirements.txt我看到的一些人所做的更好的方法。
我想使用它的主要优点是您可以在单独的requirement.in文件中跟踪项目的实际直接依赖项
我发现这与在具有package.json(requirements.in) 和package-lock.json(requirements.txt)的节点应用程序项目中管理节点模块/依赖项的方式非常相似。
| 归档时间: |
|
| 查看次数: |
3200 次 |
| 最近记录: |