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

Should put in requirements.txt dependency targeting package in pypi or github repo?

requirements.txt 中,是否有任何技术指示更喜欢引用 PyPI 上的包而不是 GitHub 上的原始来源?

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

另一件事是需要在目标机器上安装 git。

还有其他迹象吗?

PyPI 是分发 已发布版本 包的公认的实际位置,并且可能并非所有 Python 打包工具都支持从 [=28= 安装].

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

接下来,并不是所有的项目维护者都记得在 GitHub 中标记发布;分发给 PyPI 的内容可能很难在 GitHub 上找到。标签也可能 错误 。您最终可能会安装与 PyPI 略有不同的版本,当您 运行 遇到支持问题时会造成混淆。

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

所以,简而言之,您应该更喜欢使用 PyPI 而不是 GitHub,因为这可以确保您获得正式版本,并且更便携。如果特定版本没有其他来源,则仅在 requirements.txt 中使用 GitHub URL。