ModuleNotFoundError: No module named, but file nested within module
ModuleNotFoundError: No module named, but file nested within module
我对 Python 中的模块有疑问。
使用 VSCode 我设置了以下简单代码:
Demo/
Test.py
z1/
\_\_init\_\_.py
Foo.py
z2/
\_\_init\_\_.py
Screen.py
screen.py 包含:
class Screen:
SCREEN_SIZE = [800, 600]
和z2/__init__.py
from z1.z2.Screen import *
并且下面的 Foo.py 和 Test.py 都有:
from z1.z2.Screen import *
print(Screen.SCREEN_SIZE)
为什么当我 运行 Test.py 时,我得到:
[800, 600]
但是当我 运行 Foo.py 时,我得到:
File "***\Python\z1\Foo.py", line 1, in <module>
from z1.z2 import *
ModuleNotFoundError: No module named 'z1'
我可以将 __init__.py 中的 z1.z2 更改为 z2,但是 Test.py 不起作用。
有什么办法让它对两个文件都有效吗?
我个人不喜欢 Python 的导入系统。当运行Foo.py你能导入使用from z2.Screen import *
成功吗?
我(不幸的是)也使用以下代码来处理测试代码
try:
from x.y import z
except ImportError:
from y import z
但我想您也可以使用 os.path 将根路径添加到 Foo.py。在 Foo.py 中,您可以尝试添加
import sys
sys.path.append('../')
您似乎没有使用虚拟环境,这导致文件 运行 独立排序。
照原样,您正尝试在 Foo.py
中导入 z1
,但 Foo.py
只能看到一个名为 z2
的子文件夹。将 Foo.py
中的导入语句更改为 from z2.Screen import *
暂时解决了这个问题。
如果使用虚拟环境,那么您必须使用 import
就好像文件位于主目录中一样。
作为旁注,this might give some better insight to using _init_.py
我对 Python 中的模块有疑问。
使用 VSCode 我设置了以下简单代码:
Demo/
Test.py
z1/
\_\_init\_\_.py
Foo.py
z2/
\_\_init\_\_.py
Screen.py
screen.py 包含:
class Screen:
SCREEN_SIZE = [800, 600]
和z2/__init__.py
from z1.z2.Screen import *
并且下面的 Foo.py 和 Test.py 都有:
from z1.z2.Screen import *
print(Screen.SCREEN_SIZE)
为什么当我 运行 Test.py 时,我得到:
[800, 600]
但是当我 运行 Foo.py 时,我得到:
File "***\Python\z1\Foo.py", line 1, in <module>
from z1.z2 import *
ModuleNotFoundError: No module named 'z1'
我可以将 __init__.py 中的 z1.z2 更改为 z2,但是 Test.py 不起作用。 有什么办法让它对两个文件都有效吗?
我个人不喜欢 Python 的导入系统。当运行Foo.py你能导入使用from z2.Screen import *
成功吗?
我(不幸的是)也使用以下代码来处理测试代码
try:
from x.y import z
except ImportError:
from y import z
但我想您也可以使用 os.path 将根路径添加到 Foo.py。在 Foo.py 中,您可以尝试添加
import sys
sys.path.append('../')
您似乎没有使用虚拟环境,这导致文件 运行 独立排序。
照原样,您正尝试在 Foo.py
中导入 z1
,但 Foo.py
只能看到一个名为 z2
的子文件夹。将 Foo.py
中的导入语句更改为 from z2.Screen import *
暂时解决了这个问题。
如果使用虚拟环境,那么您必须使用 import
就好像文件位于主目录中一样。
作为旁注,this might give some better insight to using _init_.py