【发布时间】:2024-01-12 17:14:01
【问题描述】:
我的文件夹结构如下
mypackage/
__init__.py
package1/
__init__.py
module1.py # has ClassOne
module2.py # has ClassTwo
script.py
package2/
__init__.py
module3.py # has ClassThree
module4.py # has ClassFour
在script.py 我想从module4 访问ClassFour,所以我使用如下的相对导入
from ..module4 import ClassFour
c = ClassFour()
但我遇到了错误
ValueError:尝试相对导入超出*包
我知道我可以用
解决这个问题import sys
sys.path.append("path/to/my/module/")
但我对相对进口的解决方案感兴趣。
我提出了几个问题并尝试了解决方案,例如 - How to do relative imports
并且还尝试使用
运行我的文件python -m 脚本
但没有成功
【问题讨论】:
-
你可以把
script.py放在你的包的顶层。或者您可以通过from mypackage.package2.module4 import ClassFour从已安装的包中导入。另请注意,from ..module4 import ClassFour在任何情况下都不会成功,因为这样的模块不存在。它应该是from ..package2.module4 import ClassFour或from ..package2 import ClassFour,如果你将它导入__init__.py。
标签: python python-3.x python-import