我开始研究具有以下文件夹结构的项目,其中每个顶层文件夹都位于单独的存储库中
aggregate:=Sub(main, x) main.Price = main.Price + If(x.NoFeatures, 0, x.Price)
我想project-api/
source/
module1.py
module2.py
project-core/
source/
module3.py
module4.py
并且能够做到:
pip install -e
,无需更改文件夹结构(由项目修复)。
问题:如何创建相应的from api.module1 import function1
from core.module3 import function3
?
答案 0 :(得分:1)
您无法使用pip install -e
来执行此操作,因为选项-e
以开发/可编辑模式“安装”软件包。它实际上并没有安装任何东西,而是创建了一个链接,该链接允许Python直接从开发目录导入模块。不幸的是,在您无法实现的情况下-目录project-core
和project-api
的名称(-
中包含禁止的字符-无法就地导入这些目录。
但是可以使用pip install .
从这些目录中安装顶级软件包api
和core
。首先,您必须添加__init__.py
:
touch project-api/source/__init__.py
touch project-core/source/__init__.py
其余的setup.py
完成其余工作:
#!/usr/bin/env python
from setuptools import setup
setup(
name='example',
version='0.0.1',
description='Example',
packages=['api', 'core'],
package_dir={
'api': 'project-api/source',
'core': 'project-core/source',
}
)
运行pip install .
,您就完成了。在Python中执行import api, core
。
PS。如果您可以在根目录创建符号链接:
ln -s project-api/source api
ln -s project-core/source core
您可以使用pip install -e .