如何创建可以从python导入的命名空间
我已经编写了一个python包,名为如何创建可以从python导入的命名空间,python,import,module,package,Python,Import,Module,Package,我已经编写了一个python包,名为sugarplot,其中包含一个\uuu init\uuuu.py: from sugarplot.test import testing 我在sugarplot/test/目录中有一个python模块testing.py。假设这个文件有一个我想导入的函数some\u function。我想做的(但似乎不起作用)是在python解释器/或其他脚本中执行以下操作: from sugarplot.testing import some_function 但是,
sugarplot
,其中包含一个\uuu init\uuuu.py
:
from sugarplot.test import testing
我在sugarplot/test/
目录中有一个python模块testing.py
。假设这个文件有一个我想导入的函数some\u function
。我想做的(但似乎不起作用)是在python解释器/或其他脚本中执行以下操作:
from sugarplot.testing import some_function
但是,我得到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sugarplot.testing'
收益率:
<module 'sugarplot.test.testing' from '/Users/jordan.e/Google Drive/GTD/PhD/Software/sugarplot/sugarplot/test/testing.py'>
我知道我可能遗漏了一些关于导入工作原理的基本知识,但我不知道它是什么,我也没有找到答案
编辑:
以下工作(遵循目录结构):
我如何在不依赖于目录结构的情况下强制执行我真正想要的工作?我认为导入testing
会在sugarplot
模块中创建一个名为testing
的名称空间,它对目录结构一无所知
检查模块时,如下所示:
import sugarplot
print(sugarplot.testing)
<module 'pkg.test.testing' from '/Users/jordan.e/Google Drive/GTD/PhD/Software/sandbox/pkg/test/testing.py'>
它不是sugarplot.testing
,而是sugarplot.test.testing
。我知道,我是说我希望它是sugarplot.testing。如何制作sugarplot.testing?一个简单的方法是不将它嵌套在包的test
目录中。
from sugarplot.test.testing import some_func
<module 'pkg.test.testing' from '/Users/jordan.e/Google Drive/GTD/PhD/Software/sandbox/pkg/test/testing.py'>