Python 应该在pypi或github repo中放入requirements.txt依赖目标包吗?

Python 应该在pypi或github repo中放入requirements.txt依赖目标包吗?,python,github,pypi,Python,Github,Pypi,在requirements.txt中,是否有任何技术指示更倾向于引用PyPI上的包而不是GitHub上的原始源代码 我唯一想到的是,使用GitHub在某个版本上冻结包非常麻烦(package==1.0.0vsgit://github.com/{username}/{reponame}.git@{tagname}#egg={desired egg name}),但我不确定这是否会导致任何问题 另一件事是在目标机器上安装git的必要性 还有其他迹象吗?PyPI是分发发布版本的软件包的公认位置,可能不

requirements.txt
中,是否有任何技术指示更倾向于引用PyPI上的包而不是GitHub上的原始源代码

我唯一想到的是,使用GitHub在某个版本上冻结包非常麻烦(
package==1.0.0
vs
git://github.com/{username}/{reponame}.git@{tagname}#egg={desired egg name}
),但我不确定这是否会导致任何问题

另一件事是在目标机器上安装git的必要性


还有其他迹象吗?

PyPI是分发发布版本的软件包的公认位置,可能不是所有Python打包工具都支持从GitHub安装

正如您已经注意到的,要支持GitHub,必须安装git,才能使用
pip
;这限制了文件的可移植性

其次,并非所有项目维护人员都记得在GitHub中标记发布;在GitHub上很难找到分发给PyPI的内容。标签也可能是错误的。您可能最终安装了一个与PyPI略有不同的版本,在遇到支持问题时会造成混乱

另一方面,如果您必须安装一个未发布的开发版本(例如,您需要一个关键的错误修复程序,但此后没有推出任何版本),那么GitHub可能是唯一可以获得该版本的地方


因此,简而言之,您应该更喜欢使用PyPI而不是GitHub,因为这样可以确保获得正式版本,并且更具可移植性。只有在特定版本没有其他源的情况下,才能在
requirements.txt
中使用GitHub URL。

如果您是从发布标签安装的,那么这两者都只是一种分发机制,没有关系。如果您是从任意版本安装的,那么GitHub有那个版本,PyPI可能不会。大多数情况下,GitHub有最新的开发版本。如果您想要稳定的版本,您必须更改分支或标记,但当涉及到PyPI或pip时,它只会是稳定的版本。并且易于安装新版本