【发布时间】:2020-08-15 14:06:24
【问题描述】:
我正在尝试为某人生成requirements.txt 来复制我的环境。如您所知,标准方式是
pip freeze > requirements.txt
我注意到这将列出所有包,包括已安装包的依赖项,这使得这个列表不必要的庞大。然后我浏览了一下,发现pip-chill 允许我们只列出requirements.txt 中已安装的包。
现在,据我了解,当有人尝试使用pip install -r requirements.txt 复制环境时,这将自动安装已安装软件包的依赖项。
如果这是真的,这意味着使用pip-chill 而不是pip 来生成requirements.txt 是安全的。我的问题是,是否还有其他使用 pip-chill 忽略已安装软件包的依赖项的风险,而我在这里缺少这些风险?
【问题讨论】:
-
我不知道 pip chill,但是您必须小心与所需版本不匹配的依赖项的依赖项。例如。您使用 numpy 1.5 和 pandas 1.0(并且该版本的 pandas 要求使用 numpy 1.4)
-
冻结所有包版本的目的是让你知道你将使用已知的好版本运行。否则可能会出现版本不兼容的错误。
-
@deceze 好吧,如果您安装了特定版本的软件包,它也会知道该版本的良好依赖项版本(根据该版本中该软件包的要求),对吗?所以我假设不需要记录依赖版本?
-
直到依赖发布了一个新的破坏版本,它破坏了包,直到包发布了一个对其依赖更严格的新版本。这并非闻所未闻。
-
您可以使用您的直接依赖项设置和维护一个
setup.py文件,以及使用您已知的良好冻结依赖项的requirements.txt文件。基本上每个主要的依赖管理器都是这样做的,一个直接列表和一个“锁定”文件。
标签: pip requirements.txt