【问题标题】:Where do you clone Python module git repositories?你在哪里克隆 Python 模块 git 存储库?
【发布时间】:2018-06-05 00:49:45
【问题描述】:

我有兴趣为 GitHub Python 模块存储库做出贡献,但我不完全确定在哪里克隆它。这是一个简单的模块,只有一个__init__.py 和一些.py 文件。无需在模块文件夹之外安装或更改其他文件。

我希望能够直接在我的站点包文件夹中克隆存储库。当我想按原样使用库时,我会切换到 master 分支。如果我想开发一个新功能,可以从devel分支出来。如果我想尝试其他人实现的新功能,我可以切换到那个特定的分支。我什至可以将它保存在开发分支中,以获取最新的(尽管可能不稳定)功能。所有这一切都无需更改import 语句以指向我的任何脚本中的不同位置。这个选项,尽管它似乎做了我想做的所有事情,但由于某种原因似乎有点错误。另外,我不确定在调用python -m pip list --outdated 时这会对 pip 做什么。我感觉它不会知道当前版本是什么。

另一种选择是将其克隆到其他文件夹并仅将 pip 安装的变体保留在 site-packages 文件夹中。这样我就可以在站点包中正确安装库,并且可以通过在 repo 文件夹中创建脚本来尝试新功能。这似乎不像上面的选项那么灵活,但它不会与 site-packages 文件夹混淆。

解决这个问题的最佳方法是什么?当您既想处理存储库并使用最新功能时,如何克隆存储库?

【问题讨论】:

    标签: python git github module repository


    【解决方案1】:

    我认为这是一个关于打包和开源的问题,而不是 Python 本身,但我会尽力帮助你。

    • 如果你想在 Pip 上托管你的包,你应该去here,在那里你会看到如何上传和标记你的包以供使用。

    • 如果你想给某个开源库添加一些功能,你可以尝试submit a Pull Request到那个库,这样每个人都可以使用它。 PR 的规则是针对每个项目的,你应该询问维护者。

    • 如果您的修改没有合并到 master 中,但您仍想在不更改 import 语句的情况下使用它,您可以 fork 该 repo,并发布您自己的修改,例如,Github。

      在这种情况下,您可以像这样安装您的修改:

      pip install git+https://github.com/username/amazing-project.git
      

      这样一来,您的库将来自您自己的存储库。

    如果您要选择第三个选项,我强烈建议您使用virtualenv,您可以在其中创建具有不同包、依赖项等的不同虚拟环境,而不会弄乱您的 Python 安装。 here 提供了一个不错的指南。

    【讨论】:

    • 感谢您的回复,但这不是我想知道的。我知道如何为项目做出贡献,只是不知道应该在哪里克隆存储库:在站点包或其他地方。
    • 在这种情况下,我认为你可以做的最好的测试包的开发是使用虚拟环境,这样你就可以在版本之间来回切换。
    • 这是一个很好的观点,但我可以通过切换到发布分支来使用 git 做到这一点。但是,是的,如果没有发布分支或者它与实际发布不同,那么虚拟环境将是一个很好的解决方案。
    • 在 python 包位于 git repo 根目录的子目录中时如何处理这个问题有什么想法吗?一个例子是pandas。我想将git clone pandas repo 放入site-packages 目录,但是实际的python 包将在site-packages/pandas/pandas 中,这意味着import 语句不能正常工作。
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2015-09-30
    • 2018-03-07
    相关资源
    最近更新 更多