18

背景

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

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

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

core软件包是一个库。notebooks它是应用程序和应用程序的依赖项web

作为一个库core包,其依赖项在setup.py

import setuptools

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

和应用程序使用pipenvweb进行依赖管理。它们的依赖关系在.notebooksPipfile

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

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

请注意core依赖项如何是本地依赖项,因此是相对路径。

问题

pipenv installwebor目录中执行notebooks操作,不会core像我预期的那样安装库的依赖项!

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

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

4

1 回答 1

28

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

我继续coresetup.py.

我已更改webnotebook应用程序以使用包的可编辑安装core
这是通过在webandnotebooks目录中运行以下命令来完成的:

pipenv install --editable ../core

它产生了这个差异

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

现在pipenv installwebandnotebooks目录运行会导致安装core包及其依赖项!

它还解决了另一个非常烦人的问题,即pipenv install每次core. 现在它无需重新安装本地软件包即可获得开发更改!

于 2018-11-27T19:59:48.717 回答