我一直在打包python项目,所以我可以在实验室的其他系统上安装它。在我关于如何创建setup.py脚本的研究中,我已经看到了两种方法。
1)使用" pip freeze> requirements.txt"命令;然后"包=' requirements.txt'"在安装脚本中
2)只需使用" packages = find_packages()"在安装脚本中
我的问题是,这两种方法有什么区别?好像" find_packages"与" pip freeze"相同但是在安装没有开始的模块方面没有任何作用。
任何人都可以解释这两种方法有何不同,或者只是解释每种方法的作用,以便我可以就使用哪种方法做出更明智的决定?
谢谢!
答案 0 :(得分:5)
使用“pip freeze> requirements.txt”命令;然后在安装脚本
中“packages ='requirements.txt'”
即使假设packages='requirements.txt'
你的意思是packages=open('requirements.txt').read().splitlines()
,这绝对是错误的做法,我希望你只是误读了你所咨询的任何来源而不是这样的公然错误信息实际上是在某处发布的。
packages
函数的setup()
关键字的目的是告诉setuptools
在分发和发布时,您的存储库中将包含哪些Python代码目录。安装你的项目。对于大多数简单案例,packages=find_packages()
就是您所需要的。
requirements.txt
应该包含您的项目依赖的其他人的项目列表(它应该是手工制作而不是将pip freeze
重定向到其中切除黑猩猩)。将其内容传递给setup()
的正确install_requires
关键字,这是导致项目的依赖关系也会在有人安装项目时安装的原因。