使用 Python 包管理器 Poetry 时,我应该向 .gitignore 添加什么 files/directories?

What files/directories should I add to .gitignore when using Poetry, the Python package manager?

我正在使用一个名为 Poetry 的非常新的 Python 包管理器。

它在创建新项目(环境)时创建了几个 files/directories,但我不确定我应该将哪个添加到 .gitignore 以获得最佳实践。

假设我通过这样做创建了一个新的诗歌项目:

$ poetry new foo_project
$ cd foo_project
$ poetry add numpy
$ ls

有:

tests (directory)
foo_project (also a directory)
pyproject.toml (a file that specifies installed packages)
poetry.lock (a lock file of installed packages)
README.rst (I don't know why README is created but it just shows up.)

我通常添加tests/foo_project/poetry.lockREADME.rst,因为它们似乎依赖于创建项目的机器。此外,我似乎只能使用 pyproject.toml 重现环境,所以这是我忽略所有其他 files/directories 的另一个原因。

然而,这只是我的直觉,不幸的是,我在官方文档中找不到任何我真正应该添加到 .gitignore 的官方指南。

这让我很烦恼,我不确定自己在做什么。我应该将哪些添加到我的 .gitignore

最近也转向诗歌。

我会说你不应该添加任何:tests/foo_project/poetry.lockREADME.rst 到你的 .gitignore。换句话说,那些文件和文件夹应该在版本控制中。我的理由如下:

tests/ - 你的测试不应该依赖于机器(除非这是你的包的已知限制)并且为其他人提供测试是他们如何测试 a)安装已经工作和 b)任何更改他们不会破坏过去的功能,因此拉取请求变得更加稳健。

foo_project/ - 这是您的 python 模块所在的位置!如果您希望 poetry 能够构建和发布您的包,那么所有 .py 文件都应该在这个文件夹中。

poetry.lock - 请参阅 https://python-poetry.org/docs/basic-usage/ 中的内容:

When Poetry has finished installing, it writes all of the packages and the exact versions of them that it downloaded to the poetry.lock file, locking the project to those specific versions. You should commit the poetry.lock file to your project repo so that all people working on the project are locked to the same versions of dependencies (more below).

README.rst - 虽然这个可能更个人化,但如果您使用诗歌来发布您的包,那么这个文件将成为您的包自述文件,例如到 PyPi。没有它,你的包裹将有一个空的自述文件。我有两个自述文件,一个 .md(针对 GitHub)和一个 .rst(针对 PyPi)。我为 developers/users 使用 GitHub 自述文件,为纯用户使用 PyPi。