适当的 setup.py 创作

Proper setup.py creation

所以我有一个结构如下所示的项目:

project
├── src
│   ├── api
│   │   ├── __init__.py
│   │   └── api.py
│   ├── instance
│   │   ├── __init__.py
│   │   └── config.py
│   ├── packages
│   │   ├── __init__.py
│   │   └── app.py
├── tests
│   └── __init__.py
├── requirements.txt
├── README.md
├── .gitignore
└── setup.py

我正在尝试创建 setup.py 以便从 package/app.py 调用 instance/config.py。所以我创建了以下 setup.py:

from distutils.core import setup
from setuptools import setup, find_packages

setup(
    name='project',
    version='0.1dev0',
    author='Author name', 
    author_email='my_email',
    packages=['api', 'instance', 'packages'],
    long_description=open('README.md').read()
)

但我收到以下错误:

...
      warnings.warn(tmpl.format(**locals()))
    package init file 'src\__init__.py' not found (or not a regular file)
    error: package directory 'api' does not exist
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

所以每当我尝试从 packages/app.py 调用 instance/config.py 时,我都会收到以下错误:

    from instance import config
ModuleNotFoundError: No module named 'instance'

我需要对 setup.py 文件做什么才能使其正常工作?是否应该以某种方式改变项目的结构?

非常感谢!

简而言之,您必须在项目目录中创建一个根包 project。有关详细信息,请参阅 https://packaging.python.org/tutorials/packaging-projects/。那么

from project.instance import config

src 重命名为 project 并用 imports

放在那里 __init__.py
from . import api, instance, packages