为现有项目结构创建setup.py

时间:2019-08-27 17:01:28

标签: python setuptools

我开始研究具有以下文件夹结构的项目,其中每个顶层文件夹都位于单独的存储库中

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

1 个答案:

答案 0 :(得分:1)

您无法使用pip install -e来执行此操作,因为选项-e以开发/可编辑模式“安装”软件包。它实际上并没有安装任何东西,而是创建了一个链接,该链接允许Python直接从开发目录导入模块。不幸的是,在您无法实现的情况下-目录project-coreproject-api的名称(-中包含禁止的字符-无法就地导入这些目录。

但是可以使用pip install .从这些目录中安装顶级软件包apicore。首先,您必须添加__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 .