使用Python 3.8,导入时发生问题。非常简单但是在python 3中的导入方式有何变化?
在main
文件夹下,存在以下结构。
a1.py
import sys
print(sys.version)
from b.b1 import *
b1.py
import os
print(os.getcwd())
当我执行python a/a1.py
(在main
下)时,它prints python version
但在按如下所示导入时出错了
Traceback (most recent call last):
File "a/a1.py", line 3, in <module>
from b.b1 import *
ModuleNotFoundError: No module named 'b'
可以通过在a1.py
中附加路径来解决,但不能解决。我在这里错过了什么吗?还是取决于解释器的路径?
import sys
print(sys.version)
sys.path.append("path")
from b.b1 import *
在Pycharm中,当我在没有a1.py
的情况下执行sys.path.append
时(右键单击,以“ a1”运行),它将执行。执行的命令如下所示
/Users/a1234/venv/bin/python /Users/a1234/project_folder/main/a/a1.py
当我从终端执行a1.py
而没有sys.path.append
时(在主目录下,python a / a1.py,得到ModuleNotFoundError:
错误)
答案 0 :(得分:0)
a1.py的模块找不到b文件夹,因为它已经在一个文件夹内,但是,如果您在两个文件夹a,b之外有一个python文件,则可以像调用代码一样调用它。 –
sys.path.append(path),将路径添加到路径列表中以检查可导入模块,因此为什么要执行它。