Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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包中使用`\uuuu init\uuuu.py`文件中的`\uu all\uuuu`加载子包_Python_Module_Package_Init - Fatal编程技术网

无法在python包中使用`\uuuu init\uuuu.py`文件中的`\uu all\uuuu`加载子包

无法在python包中使用`\uuuu init\uuuu.py`文件中的`\uu all\uuuu`加载子包,python,module,package,init,Python,Module,Package,Init,我想使用最上面的\uu init\uuuuupy.py文件中的\uuuuuuu all\uuuuuuuuuu>属性加载子包,而不是在那里使用导入,但不幸的是,我无法让它工作 下面是一个简化的示例: 我有我的包裹 pdbsr/ __init__.py* ... extras/ __init__.py ... *这个星号应该突出显示我在下面讨论的\uuuu init\uuuu文件 所以当我把线 import extras 在\uu

我想使用最上面的
\uu init\uuuuupy.py
文件中的
\uuuuuuu all\uuuuuuuuuu>属性加载子包,而不是在那里使用
导入
,但不幸的是,我无法让它工作

下面是一个简化的示例:

我有我的包裹

pdbsr/
     __init__.py*
     ...
     extras/
         __init__.py
         ...
*
这个星号应该突出显示我在下面讨论的
\uuuu init\uuuu
文件

所以当我把线

import extras
\uuuu init\uuuu.py
文件中,一切正常。在解释器中测试模块时,我得到以下响应,这表明模块已成功加载:

>>> import pdbsr
>>> pdbsr.extras
<module 'pdbsr.extras' from '.../site-packages/pdbsr/extras/__init__.pyc'>
我有个问题:

>>> import pdbsr
>>> pdbsr.extras
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'extras'
>>> extras
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'extras' is not defined
等等。因为每个子包都有很多
.py
文件,所以我的
\uuuu init\uuu
文件变得非常庞大

例如,pdbsr/pdb_file/new_pdb包含类
NewPdb()
,我可以在解释器中调用该类

>>> import pdbsr
>>> new = pdbsr.NewPdb()

(我想避免进一步的点符号,比如
pdbsr.new\u pdb.NewPdb()

这不是
\u all\u
所做的<代码>\uuuuuuuuuuuuuuuuuuuuuuuu
是导入模块时可见的模块成员列表。在
\uuuu init\uuuu
文件中使用
import
可能是加载软件包的最佳方式,除非您有一些特殊原因说明这不起作用。

感谢您的深入了解。但我还是有点不确定你所说的“可见”是什么意思。我还为我的问题添加了一个编辑部分,因为我意识到我以前选择了一个非常糟糕的例子
`from pdbfile.new_pdb import *`
`from pdbfile.[...] import *`
`from pdbfile.[...] import *`
>>> import pdbsr
>>> new = pdbsr.NewPdb()