Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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 如何构造模块,以避免出现诸如;导入模块.module.module";_Python_Module_Package - Fatal编程技术网

Python 如何构造模块,以避免出现诸如;导入模块.module.module";

Python 如何构造模块,以避免出现诸如;导入模块.module.module";,python,module,package,Python,Module,Package,我有一个模块结构如下: /module __init__.py /submod_1 __init__.py submod_1_class.py /submod_2 __init__.py submod_2_class.py 但是,我发现必须在submod_1_class.py中导入一个类,并且必须使用以下内容,这让我感到非常恼火: from module.submod_1.submod_1_class im

我有一个模块结构如下:

/module
    __init__.py
    /submod_1
        __init__.py
        submod_1_class.py
    /submod_2
        __init__.py
        submod_2_class.py
但是,我发现必须在
submod_1_class.py中导入一个类,并且必须使用以下内容,这让我感到非常恼火:

from module.submod_1.submod_1_class import my_class
我希望能够键入以下内容:

from module import my_class
我浏览了
网站包
文件夹,并浏览了流行的模块,如
numpy
,但我还没有弄清楚如何使用,例如:

import numpy
a = numpy.array([1,2,3,4,5])

numpy
数组对象的定义深入到
numpy
包的几个子文件夹中时,可以使用
您可以使用
\uuu init\uuuuupy.py
文件定义可以从给定模块导入的内容。例如,对您的结构进行一个非常简单的添加,就可以从
子模块1\u类
中绘制
,这样外部用户就可以从模块导入类
中简单地

/module
    __init__.py
        from submod_1 import Class
    /submod_1
        __init__.py
            from submod_1_class import Class
        submod_1_class.py
    /submod_2
        submod_2_class.py
例如,在
numpy
中,顶级
\uuuu init\uuuu.py
包含以下内容:

from .core import *

这意味着在中定义的所有内容都可以直接在
numpy
名称空间中从外部获得,即使它实际上可能被深埋在一些复杂的结构中。

添加一些
\uuuuu init\uuuuuuuy.py
文件来定义应该从每个模块访问的内容。例如,如果在
/module
中有一个包含来自submod_1.submod_1_类导入类的
,则可以从模块外部从模块导入类
。例如,坚持使用
numpy
,意味着中定义的所有内容都可以直接从
numpy
@jornsharpe导入。请在回答中说明这一点,这样您就可以获得我想要给您的投票分数。