在不使用 setup.py 的情况下开发 Python 包的首选方法是什么?

Chr*_*kre 10 pip setuptools setup.py python-packaging python-poetry

我正在开发一个 Python 包,我不想pip install .每次更改某些内容时都必须继续运行以重新安装我的包。除非我有文件,否则使用-eor--editable似乎不起作用setup.py,也没有--no-use-pep517pyproject.toml如果我没记错的话,我有一个替代方案,这是现在的首选。那么,现在最好的方法是什么?

我的包只是一个 CLI 脚本,但它从同一目录另一个名为utils.py. 开发时,我不能只从终端手动运行脚本,因为这样我会从行中得到“name_of_package不是一个包from name_of_package.utils import function” 。而如果我只有from utils import function,我可以从终端运行脚本,但是当我pip install运行时,它会说“没有名为utils”的模块。

我确实安装poetry并安装了我的依赖项,运行poetryshell,然后尝试使用 运行我的脚本poetry run /path/to/script.py,但我不断收到错误消息,指出我的包不是包。

sin*_*roc 14

如今,使用setuptools作为构建后端,您可以选择使用setup.pysetup.cfgpyproject.toml或这三个文件的任意组合来声明项目的元数据并配置项目的打包。由于pyproject.toml它是标准化的,因此成为首选(见下文)。所有这些都与可编辑安装兼容 ( python -m pip install --editable .)。

可编辑的安装机制有一个标准规范(由PEP 660文档发起)。除了setuptools之外,许多构建后端都支持它。这些是我所知道的支持标准化可编辑安装机制的构建后端:

所有这些构建后端都可以进行配置pyproject.toml(包括对标准化[build-system]部分的支持),并且除了Poetry之外的所有后端都支持标准化[project]部分。我这里有一个比较表

参考