使用 Pipenv 开发 Python 库

Developing a Python library with Pipenv

我正在尝试开发一个 Python 库,它最终将被放在 PyPI 上。

这是我在另一个项目中使用的库,它是从 PyPI 中提取的。

我在自己的项目存储库中对该库进行了单元测试。但是我主要是通过主应用来测试正在使用的库。

我之前在本地"publishing"图书馆,使用

pip install -e

以便另一个存储库中的主项目可以从本地包中提取它,我可以在上下文中对其进行测试。

但现在我要转向 pipenv。我希望能够做同样的事情。但是如果我将依赖项放在 Pipenv 文件中,它似乎试图从真正的 PyPI 中提取,而不是我的本地存储。

如何使用 Pipenv 设置此工作流?

Pipenv 可以从各种来源安装包,而不仅仅是从 PyPI。 CLI 用法与 pip, which is a feature of pipenv. You can pass a local path or a URL with CVS prefixpipenv install 非常相似。 Pipenv 会相应地将包添加到 Pipfile。

CLI 用法

首先转到主应用程序的项目文件夹(其中包含 Pipfile)。然后运行

$ pipenv install --dev -e "/path/to/your/local/library"

如果库由 Git 或 SVN 控制版本,您也可以像这样使用 URL:

$ pipenv install --dev -e git+https://github.com/your_user_id/libraryname@develop

如果您的库的 Git 存储库存储在本地,请使用 file:// 而不是 https://github.com。还支持 FTP 和 SSH 等其他协议。

以上命令将从源中提取包,安装它并修改当前文件夹中的 Pipfile 以包含该包。

Pipfile 用法

通常不需要直接修改Pipfile。有关 pipfile 中的高级设置,请参阅 Pipfile's specs。以下是 pipfile

的一些示例条目
[dev-packages]
mylibrary = { git = 'https://github.com/xxx/mylibrary.git', ref = '0.0.1', editable = true }
"e1839a8" = {path = "/path/to/your/local/library2", editable = true}
"e51a27" = {file = "/path/to/your/local/library1/build/0.0.1.zip"}

设置私有 PyPI 索引

虽然有点矫枉过正,但为了完整起见,设置一个 服务器也可以。