我们的项目具有以下高级目录结构*
./datascience/
├── core
│ └── setup.py
├── notebooks
│ └── Pipfile
└── web
└── Pipfile
*为简洁起见,排除了所有不相关的文件和目录。
core
软件包是一个库。它是notebooks
和web
应用程序的依赖项。
core
软件包being a library的依赖项在setup.py
中指定
import setuptools
setuptools.setup(
install_requires=[
'some-dependency',
'another-dependency'
]
)
web
和notebooks
应用程序正在使用pipenv进行依赖性管理。它们的依赖性在Pipfile
中指定。
例如,以下是在web
中指定web/Pipfile
依赖项的方式:
[packages]
datascience-core = {path = "./../core"}
flask = "~= 1.0"
请注意core
依赖项是本地依赖项,因此是相对路径。
从pipenv install
或web
目录内部执行notebooks
并不会像我期望的那样安装core
库的依赖项!
我还尝试对Pipfile
使用core
,希望pipenv在其图形中将其选中并下载所有嵌套的依赖项。但事实并非如此。
pipenv正在为core
或web
应用程序安装依赖项时,如何自动安装notebooks
应用程序的依赖项?
答案 0 :(得分:1)
由于在pipenv问题线程https://github.com/pypa/pipenv/issues/209#issuecomment-337409290
中的此评论找到了解决方案我继续在RoleEntryPoint
中列出core
的依赖项。
我已更改setup.py
和web
应用程序,以使用notebook
软件包的可编辑安装。
这是通过在core
和web
目录中运行以下命令来完成的:
notebooks
它产生了差异
pipenv install --editable ../core
现在从[packages]
- datascience-core = {path = "./../core"}
+ datascience-core = {editable = true,path = "./../core"}
和pipenv install
目录运行web
将导致notebooks
软件包及其依赖项的安装!
它还解决了另一个非常烦人的问题,每次core
发生变化时,都必须pipenv install
。现在,它无需重新安装本地软件包就可以进行开发更改!