更新 3:如果你想从包目录中导入一个子模块,即base,你可以在文件中使用这个(省略导入中的base部分) /模块mod1.py,
from mod2 import classA
上述解决方案也适用于run_test_1.py 和run_test_2.py 脚本。希望这会有所帮助=)
更新 2:我将通过从 test 目录执行 python 脚本来演示相同的方法,
在test目录下创建一个名为run_test_1.py的脚本,其结构与“UPDATE 1”相同,内容如下:
from base.mod2 import classA
a = classA()
同时在test目录下创建第二个脚本run_test_2.py,内容如下:
from base import mod1
mod1.classA()
像这样从您的终端评估两个脚本,
$ cd ~/path/to/test/
$ python run_test_1.py
hello
$ python run_test_2.py
hello
如图所示,您应该在终端上得到“hello”的输出。
更新 1:我在名为 test 的目录下为您的包创建了相同的目录结构,
-- test
--base
__init__.py
mod1.py
mod2.py
version.py
__init__.py的内容和你的一样。
from .version import __version__ as version
__version__ = version
mod1.py的内容和你的一样,
from base.mod2 import classA
mod2.py的内容:
class classA:
def __init__(self):
print("hello")
然后使用目录test 中的python 解释器,我测试了以下内容,
>>> from base.mod2 import classA
>>> a = classA()
hello
如果您确定base 目录在sys.path 中,那么您可以试试这个,
from base import mod2
另外,我建议您将 base 更改为对您的项目提供更多信息的内容。
编辑:我还建议您查看 Python 网站上的 "Packages" documentation,其中还讨论了如何加载子模块。