我是不是需要将 dist 文件夹提交到 git 才能使用来自 git 的 pip 安装包?

Posted

技术标签:

【中文标题】我是不是需要将 dist 文件夹提交到 git 才能使用来自 git 的 pip 安装包?【英文标题】: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 中排除这些似乎是错误的。

【问题讨论】:

【参考方案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 中怎么办:我还需要将它添加到存储库吗?

以上是关于我是不是需要将 dist 文件夹提交到 git 才能使用来自 git 的 pip 安装包?的主要内容,如果未能解决你的问题,请参考以下文章

不小心将 .idea 目录文件提交到 git

编译后的 JavaScript 文件是不是应该提交到 Git 存储库? [关闭]

您是不是应该将 .gitignore 提交到 Git 存储库中?

使用 Gulp.js 将版本化和构建(缩小)文件正确提交到 GitHub

如何仅将提交的文件名导出到 git 中的 txt 文件? [复制]

Git复制文件保存历史[重复]