如果我有一个具有以下结构的项目:
.
├── another_sub_dir
└── sub_dir
├── random_module.py
└── script.py
项目有两个子目录。当我用命令python sub_dir/script.py
从根文件夹运行script.py并打印sys.path
时,它会打印sub_dir
作为路径。所以是Users/me/project/sub_dir
。当我想在script.py
(from sub_dir.random_module import random_func
)中使用绝对导入路径时,它会抛出一个错误:
from sub_dir.random_module import random_func
ModuleNotFoundError: No module named 'sub_dir'
执行script.py
时如何设置项目目录为系统路径?
正如我在评论中所说,您希望将sub_dir
制作为一个包。您可以通过向它添加一个名为__init__.py
的文件来实现这一点。你希望你的结构看起来像
.
├── another_sub_dir
└── sub_dir
├── __init__.py
├── random_module.py
└── script.py
您可以从根目录运行python sub_dir/script.py
,它将成功地从sub_dir.random_module
导入。