我应该如何为Python项目生成requirements.txt?我应该如何生成requirements.txt? Pip冻结不是一种好方法
这是我用pip冻结的问题。假设我的包装物P要求A,B,C假设C是进口X,Y,Z,而是由P.只需要X然后,如果我一库:
1) Install A
2) Install B
3) Install C, which installs X, Y, Z
4) Do a pip freeze into P's requirements.txt
则P的requirements.txt会看像:
1) A
2) B
3) C
4) X
5) Y
6) Z
但是Y和Z实际上并不需要在我的Python安装中运行。
据我所知,运行pip freeze
生成P的要求将显示依赖关系的所有依赖关系,因此是P的实际依赖关系的超集。
我不认为这是一个问题。 如果需求指定依赖关系的依赖关系,它是否会造成任何危害?即使您手动运行并从requirements.txt文件中除去X,Y,Z,也会在安装C时安装X,Y,Z。 pip冻结使安装依赖对用户是透明的。在运行pip冻结之前,请注意在虚拟环境中安装与项目相关的所有内容。 –
我猜“问题”我的意思是我想要P的最低要求集合作为P的requirements.txt运行。但是由于上面的问题,要求将比P运行所需的要多得多。 – Tommy
您需要C for P才能运行。 C需要Y和Z才能运行。通过传递性,你需要Y和Z来运行。 requirements.txt的要点是,只有当你自己改变它们时,你的包才会改变。如果我们没有记录Y和Z的版本,那是不可能的。 – Kevin