对于 setup.py 脚本使用 find_packages() 与 "requirements.txt" 之间的区别
Difference between using find_packages() vs "requirements.txt" for setup.py script
我一直在努力打包一个 python 项目,这样我就可以在实验室的其他系统上安装它。在我关于如何创建 setup.py 脚本的研究中,我看到了两种方法。
1) 使用"pip freeze > requirements.txt"命令;然后 "packages='requirements.txt'" 在设置脚本中
2) 只需在设置脚本中使用 "packages=find_packages()"
我的问题是,这两种方法有什么区别?似乎 "find_packages" 与 "pip freeze" 的作用相同,但在安装以 none 开头的模块方面没有任何作用。
任何人都可以解释这两种方法有何不同,或者只是解释每种方法的作用,以便我可以更明智地决定使用哪种方法?
谢谢!
use "pip freeze > requirements.txt" command; then "packages='requirements.txt'" in the setup script
即使假设 packages='requirements.txt'
你的意思是 packages=open('requirements.txt').read().splitlines()
,那也绝对是错误的做法,我希望你只是误读了你咨询过的任何来源,而不是这样公然错误的信息实际上被张贴在某处。
setup()
函数的 packages
关键字的目的是告诉 setuptools
在分发时要包含存储库中 Python 代码的哪些目录 &安装你的项目。对于大多数简单的情况,packages=find_packages()
就是您所需要的。
另一方面,requirements.txt
应该包含您的项目所依赖的其他人的项目列表(并且它应该真正是手工制作的而不是将 pip freeze
重定向到其中就像一只被切除脑叶的黑猩猩)。将其内容传递给的正确 setup()
关键字是 install_requires
,这导致每当有人安装您的项目时,您的项目的依赖项也会被安装。
我一直在努力打包一个 python 项目,这样我就可以在实验室的其他系统上安装它。在我关于如何创建 setup.py 脚本的研究中,我看到了两种方法。
1) 使用"pip freeze > requirements.txt"命令;然后 "packages='requirements.txt'" 在设置脚本中
2) 只需在设置脚本中使用 "packages=find_packages()"
我的问题是,这两种方法有什么区别?似乎 "find_packages" 与 "pip freeze" 的作用相同,但在安装以 none 开头的模块方面没有任何作用。
任何人都可以解释这两种方法有何不同,或者只是解释每种方法的作用,以便我可以更明智地决定使用哪种方法?
谢谢!
use "pip freeze > requirements.txt" command; then "packages='requirements.txt'" in the setup script
即使假设 packages='requirements.txt'
你的意思是 packages=open('requirements.txt').read().splitlines()
,那也绝对是错误的做法,我希望你只是误读了你咨询过的任何来源,而不是这样公然错误的信息实际上被张贴在某处。
setup()
函数的 packages
关键字的目的是告诉 setuptools
在分发时要包含存储库中 Python 代码的哪些目录 &安装你的项目。对于大多数简单的情况,packages=find_packages()
就是您所需要的。
requirements.txt
应该包含您的项目所依赖的其他人的项目列表(并且它应该真正是手工制作的而不是将 pip freeze
重定向到其中就像一只被切除脑叶的黑猩猩)。将其内容传递给的正确 setup()
关键字是 install_requires
,这导致每当有人安装您的项目时,您的项目的依赖项也会被安装。