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

2023-12-21

背景

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

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

*Excluded all the irrelevant files and directories for brevity.

The core包是一个库。这是两者的依赖关系notebooks and web应用程序。

The core包裹,作为一个图书馆 https://pipenv.readthedocs.io/en/latest/advanced/#pipfile-vs-setup-py,其依赖项指定在setup.py

import setuptools

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

The web and notebooks应用程序正在使用pipenv https://pipenv.readthedocs.io用于依赖管理。它们的依赖关系在一个中指定Pipfile.

例如,下面是如何web依赖项指定于web/Pipfile:

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

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

Problem

Doing a pipenv install从里面web or notebooks目录,不安装依赖项core图书馆如我所料!

我也尝试过使用Pipfile for core,希望 pipelinev 能够在其图表中拾取它并下载所有嵌套的依赖项。但事实并非如此。

的依赖关系如何core当 Pipenv 安装依赖项时,应用程序会自动安装web or notebooks app?


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

我继续列出core的依赖关系在setup.py.

我已经改变了web and notebook应用程序使用editable安装的core包裹。
这是通过在两个中运行以下命令来完成的web and notebooks目录:

pipenv install --editable ../core

它产生了这个差异

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

正在运行pipenv install来自web and notebooks目录导致安装core包及其依赖项!

它还解决了另一个非常烦人的问题,即必须pipenv install每次有变化时core。现在它可以接受开发更改,而无需重新安装本地软件包!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Pipenv 安装本地依赖项的依赖项 的相关文章

随机推荐