使用pipenv安装本地依赖项的依赖项



背景

我们有以下高级目录结构的项目*

./datascience/
├── core
│   └── setup.py
├── notebooks
│   └── Pipfile
└── web
└── Pipfile

*为简洁起见,排除了所有不相关的文件和目录

core包是一个库。它是notebooksweb应用程序的依赖项。

core包是一个库,其依赖项在setup.py中指定

import setuptools
setuptools.setup(
install_requires=[
'some-dependency',
'another-dependency'
]
)

webnotebooks应用程序正在使用pipenv进行依赖关系管理。它们的依赖关系在Pipfile中指定。

例如,以下是如何在web/Pipfile:中指定web依赖项

[packages]
datascience-core = {path = "./../core"}
flask = "~= 1.0"

请注意,core依赖关系是一个本地依赖关系,因此是相对路径。

问题

webnotebooks目录中执行pipenv install,并没有像我预期的那样安装core库的依赖项!

我还尝试将Pipfile用于core,希望pipenv能在其图中找到它并下载所有嵌套的依赖项。但事实并非如此。

当pipenv为webnotebooks应用程序安装依赖项时,如何自动安装core应用程序的依赖项?

由于pipenv问题线程中的此注释,找到了一个解决方案:https://github.com/pypa/pipenv/issues/209#issuecomment-337409290

我继续在setup.py中列出了core的依赖项。

我已将webnotebook应用程序更改为使用core软件包的可编辑安装
这是通过在webnotebooks目录中运行以下操作完成的:

pipenv install --editable ../core

它产生了这种不同的

[packages]
- datascience-core = {path = "./../core"}
+ datascience-core = {editable = true,path = "./../core"}

现在,从webnotebooks目录运行pipenv install将安装core包及其依赖项!

它还解决了另一个非常烦人的问题,即每次core发生变化时都必须使用pipenv install。现在,它在不需要重新安装本地软件包的情况下就可以进行开发更改!

相关内容

  • 没有找到相关文章

最新更新