【问题标题】:Do I need to commit the dist folder to git in order to be able to install the package using pip from git?我是否需要将 dist 文件夹提交到 git 才能使用来自 git 的 pip 安装包?
【发布时间】:2018-05-20 13:00:24
【问题描述】:

我想在工作中为我的内部团队重用一些代码。我的计划是创建一个包,然后让人们使用pip 直接从我们的 git 存储库中安装包。即如图所示:https://pip.pypa.io/en/latest/reference/pip_install/#git

我的问题是,我是否将 dist 文件夹提交给 git? pip 在找什么?

或者是否有更好的方法在团队内部(跨多个不同项目)共享/重用代码?

我使用了来自here 的 .gitignore 文件(这是 github 的默认 Python .gitignore 文件吗?)它忽略了所有的 dist 文件:

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

但是当我尝试从 repo 安装时,从 repo 中排除这些似乎是错误的。

【问题讨论】:

    标签: python git python-3.x pip package


    【解决方案1】:

    您不需要提交dist 文件夹。 pip 真的只需要存储库有一个 setup.py 文件以及您正在安装的包和/或模块。

    【讨论】:

    • 如果是这样,我为什么要创建 dist 文件夹呢?或者这只是为了让文件更小并且为 pypi 打包好?所以在我的情况下,由于我没有通过 pypi,我不需要创建 dist 文件夹?
    【解决方案2】:

    dist 是包含最终构建结果的目录的默认名称:您的项目准备好分发,即打包到pip 或其他包管理器知道的文件中如何安装:

    $ python setup.py sdist --help
    ...
      --dist-dir (-d)   directory to put the source distribution archive(s) in
                        [default: dist]
    

    因此忽略.gitignore 中的目录及其所有内容是安全的。如果你不打算将项目的安装文件上传到 PyPI 并打算通过传递 Git url 来安装它,你甚至不需要 dist 目录并且可以安全地删除它。一旦你发出任何 dist 命令(sdistbdistbdist_wheelbdist_rpm 等),它将无论如何都会重新创建。

    【讨论】:

    • 所以pip 可以从 git repo 安装包没有sdist 创建的 dist 文件夹?
    • @Dan 确切地说,正如ldx.a.ldy.c 在他的回答中已经指出的那样:pip 真的只需要存储库有一个 setup.py 文件以及你的包和/或模块安装。 我在他的回答中缺少的唯一文件是可选的setup.cfg - 如果您有一个非空文件并希望其他人使用与您相同的设置安装您的软件包,您应该推送它与源一起到您的存储库。
    • 如果我将项目放在 PyPI 中怎么办:我还需要将它添加到存储库吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2011-08-22
    • 1970-01-01
    • 2021-01-02
    • 2018-01-22
    相关资源
    最近更新 更多