python绝对导入包ModuleNotFoundError错误?
python ModuleNotFoundError error in absolute import package?
我有这样的文件结构。
.
└── E:\test
├
├── M2
│ └── demo.py
|
│
└── MA
│ └── MA1
│ │ ├── __init__.py
│ │ │
│ │ └── ma1.py
│ │__ __init__.py
ma1.py
def foo():
print("I am here")
demo.py
from MA.MA1.ma1 import foo
print(foo())
我用的是python3.8和win10系统
在 cmd 中,我尝试 cd test
目录和 python .\M2\demo.py
,它显示错误?
PS E:\test> python .\M2\demo.py
Traceback (most recent call last):
File ".\M2\demo.py", line 1, in <module>
from MA.MA1.ma1 import foo
ModuleNotFoundError: No module named 'MA'
python 解释器不会在 test\
目录中搜索模块,因为您从 test\M2\
执行脚本。您可以通过将目录“test”添加到 PYTHONPATH
变量来告诉 python 从 test\
开始搜索。
对于 windows 命令行:
set PYTHONPATH=%PYTHONPATH%;E:\test
对于linux终端:
export PYTHONPATH=path_to_test_dir
记住两件事:
1- Python 搜索 sys.path
以查找模块和包。
2- 当您 运行 您的脚本时,只有 它的目录将被添加到 sys.path
。所以你必须手动添加MA
所在的目录。在 demo.py
:
中执行以下操作
import sys
sys.path.insert(0, r'E:\test')
from MA.MA1.ma1 import foo
print(foo())
或者您可以设置 PYTHONPATH
变量。
我有这样的文件结构。
.
└── E:\test
├
├── M2
│ └── demo.py
|
│
└── MA
│ └── MA1
│ │ ├── __init__.py
│ │ │
│ │ └── ma1.py
│ │__ __init__.py
ma1.py
def foo():
print("I am here")
demo.py
from MA.MA1.ma1 import foo
print(foo())
我用的是python3.8和win10系统
在 cmd 中,我尝试 cd test
目录和 python .\M2\demo.py
,它显示错误?
PS E:\test> python .\M2\demo.py
Traceback (most recent call last):
File ".\M2\demo.py", line 1, in <module>
from MA.MA1.ma1 import foo
ModuleNotFoundError: No module named 'MA'
python 解释器不会在 test\
目录中搜索模块,因为您从 test\M2\
执行脚本。您可以通过将目录“test”添加到 PYTHONPATH
变量来告诉 python 从 test\
开始搜索。
对于 windows 命令行:
set PYTHONPATH=%PYTHONPATH%;E:\test
对于linux终端:
export PYTHONPATH=path_to_test_dir
记住两件事:
1- Python 搜索 sys.path
以查找模块和包。
2- 当您 运行 您的脚本时,只有 它的目录将被添加到 sys.path
。所以你必须手动添加MA
所在的目录。在 demo.py
:
import sys
sys.path.insert(0, r'E:\test')
from MA.MA1.ma1 import foo
print(foo())
或者您可以设置 PYTHONPATH
变量。