Python 3.x 导入python模块时出错

Python 3.x 导入python模块时出错,python-3.x,python-import,Python 3.x,Python Import,当我按照如下方式编译时,我得到了以下错误。为什么会出现错误?提前谢谢 cd /root/rel_path/ctlib/src python3 main_prog.py 错误: 代码: 主程序代码: init.py代码: 您的导入实际上是在auto.py中查找树中不存在的CtAuto类: /root/rel_path/ |--- ctlib |--- src |--- m

当我按照如下方式编译时,我得到了以下错误。为什么会出现错误?提前谢谢

cd /root/rel_path/ctlib/src 
python3 main_prog.py
错误: 代码:

主程序代码: init.py代码:
您的导入实际上是在auto.py中查找树中不存在的CtAuto类:

/root/rel_path/
             |--- ctlib
                     |--- src
                            |--- main_prog.py
                     |--- auto
                            |--- __init__.py
                     |--- auto.py
改用ctlib.auto.auto import CtAuto中的
,并将CtAuto类放入
/root/rel_path/ctlib/auto/auto.py

[编辑]
由于
\uuuu main\uuuu
位于子记录中,因此需要将项目的rootdir添加到
Pythonpath
中。(导入
CtAuto
之前)


您的导入实际上是在auto.py中查找树中不存在的CtAuto类:

/root/rel_path/
             |--- ctlib
                     |--- src
                            |--- main_prog.py
                     |--- auto
                            |--- __init__.py
                     |--- auto.py
改用ctlib.auto.auto import CtAuto中的
,并将CtAuto类放入
/root/rel_path/ctlib/auto/auto.py

[编辑]
由于
\uuuu main\uuuu
位于子记录中,因此需要将项目的rootdir添加到
Pythonpath
中。(导入
CtAuto
之前)


因为您在子级别(子级别)中运行程序,并且在同一级别上执行导入,而不创建任何包,这是同一级别上的相对导入

如下图所示更改主程序将使其正常工作

import sys
sys.path.append("..")
from auto import CtAuto

print("hello")


因为您在子级别(子级别)中运行程序,并且在同一级别上执行导入,而不创建任何包,这是同一级别上的相对导入

如下图所示更改主程序将使其正常工作

import sys
sys.path.append("..")
from auto import CtAuto

print("hello")


还是不行。错误:root@Linux:~/rel_path/ctlib/src#python3 main_prog.py回溯(最后一次调用):文件“main_prog.py”,第2行,在from ctlib.auto.auto import CtAuto ModuleNotFoundError:没有名为“ctlib”的模块root@Linux:~/rel_path/ctlib/src#对不起,我误解了你的问题。更新了我的帖子。现在它在本地为我工作。是的,它也为我工作。发现对PYTHONPATH环境变量的临时更改也正常:export PYTHONPATH=“${PYTHONPATH}:/root/rel_path/”仍然无法工作。错误:root@Linux:~/rel_path/ctlib/src#python3 main_prog.py回溯(最后一次调用):文件“main_prog.py”,第2行,在from ctlib.auto.auto import CtAuto ModuleNotFoundError:没有名为“ctlib”的模块root@Linux:~/rel_path/ctlib/src#对不起,我误解了你的问题。更新了我的帖子。现在它在本地为我工作。是的,它也为我工作。发现对PYTHONPATH环境变量的临时更改也正常:export PYTHONPATH=“${PYTHONPATH}:/root/rel_path/”
/root/rel_path/
             |--- ctlib
                     |--- src
                            |--- main_prog.py
                     |--- auto
                            |--- __init__.py
                     |--- auto.py
import sys
sys.path.append('../../')
import sys
sys.path.append('/root/rel_path/')
import sys
sys.path.append("..")
from auto import CtAuto

print("hello")