Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构造Python包?_Python - Fatal编程技术网

如何构造Python包?

如何构造Python包?,python,Python,我的大部分代码都在project.py中,它需要第二个文件otherfile.py。目前,我只是将它们作为两个单独的模块安装,使用相同的setup.py(使用py_modules变量),但我认为现在是适当打包的时候了,因为project.py正在增长,我可能需要进一步拆分它 用户只需要与project.py中的某些类和函数进行交互,因此为了保持兼容性,我希望使用以下结构: project/ __init__.py # (renamed from project.py) othe

我的大部分代码都在project.py中,它需要第二个文件otherfile.py。目前,我只是将它们作为两个单独的模块安装,使用相同的
setup.py
(使用py_modules变量),但我认为现在是适当打包的时候了,因为project.py正在增长,我可能需要进一步拆分它

用户只需要与project.py中的某些类和函数进行交互,因此为了保持兼容性,我希望使用以下结构:

project/
    __init__.py  # (renamed from project.py)
    otherfile.py
然而,我读到,
\uuu init\uuuuuu.py
应该保持几乎为空。另一种选择是:

project/
    __init__.py
    project.py
    otherfile.py
要从
project.py
导入用户可以在
\uuuu init\uuuu.py
中看到的所有内容,因为我希望避免为用户添加额外的名称空间:

import project.project

我不确定这是否真的重要,但我想以“正确的方式”做事。

您可以使用第二种结构,但在您的
\uuu init\uuuuuuuuy.py
中,只需

from .project import PublicClass1
from .project import PublicClass2
from .project import PUBLIC_CONSTANT_A
...
基本上,只在
\uuuu init\uuuuuuuuuuuupy.py
中导入您真正想要公开的内容,同时保持
\uuuuuuuuuuuuuuuuuuuuuuuupy.py
基本上没有代码逻辑。

我发现这很有帮助;那篇有用的文章。