导入 python 个模块时出错

Errors when importing python modules

我在编译的时候出现了如下错误。为什么会出现错误?提前致谢。

cd /root/rel_path/ctlib/src 
python3 main_prog.py

错误:

root@Linux:~/rel_path/ctlib/src# python3 main_prog.py 
Traceback (most recent call last):
  File "main_prog.py", line 1, in <module>
    from ctlib.auto import CtAuto
ModuleNotFoundError: No module named 'ctlib'
root@Linux:~/rel_path/ctlib/src

示例路径树:

/root/rel_path/
             |--- ctlib
                     |--- src
                            |--- main_prog.py
                     |--- auto
                            |--- __init__.py

代码:

main_prog.py代码:

from ctlib.auto import CtAuto

print("hello")

初始化.py代码:

#!/usr/bin/env python3

class CtAuto:
    def print_hello(self):
        print("Hello, from CtAuto")

您的导入实际上是在 auto.py 中寻找 CtAuto class,它在您的树中不存在:

/root/rel_path/
             |--- ctlib
                     |--- src
                            |--- main_prog.py
                     |--- auto
                            |--- __init__.py
                     |--- auto.py

改用 from ctlib.auto.auto import CtAuto 并将您的 CtAuto class 放入 /root/rel_path/ctlib/auto/auto.py

[编辑]
因为您 __main__ 在子目录中,所以您需要将项目的根目录添加到 Pythonpath。 (导入前 CtAuto

import sys
sys.path.append('../../')

import sys
sys.path.append('/root/rel_path/')

由于你是运行子级(child)中的程序,并且在同一级导入而不创建任何包,这是同一级的相对导入。

像下面这样更改 main_prog.py 将使其生效。

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

print("hello")