我正在开发一个具有以下结构的Python项目:
apx-cv/
├── utils/
│ └── custom_object_functions.py
│ └── utils.py
├── models/
│ └── sample_configurations.py
└── test/
└── run_files_ee-opt.py
utils
目录包含各种实用函数,我正在尝试将它们导入到位于run_files_ee-opt.py
目录中的test
脚本中。这是 run_files_ee-opt.py
脚本的相关部分:
from utils.custom_object_functions import create_hollow_room, get_arrow, create_coordinate_axes_mesh
# Rest of the code...
我在名为
apxcv
的 conda 环境中运行此脚本。 sys.path
包含空字符串 ''
,我理解它应该代表当前工作目录。
但是,当我尝试使用以下命令从项目根目录 (
apx-cv
) 运行脚本时:
python test/run_files_ee-opt.py
我遇到以下错误:
ModuleNotFoundError: No module named 'utils'
我还想提一下,之前我一直在 PyCharm 上运行这个脚本,并且运行顺利。现在,我想使用终端在远程计算机上运行它。当我使用终端运行它时,它在远程计算机上不起作用,甚至在我的本地计算机上也不起作用。
所有模块都存在问题,而不仅仅是
utils
,因为我也无法导入models
。我认为我错过了一些非常基本的东西,但我不是一个很强的计算机程序员,所以我知道的不多。
sys.path
:我在脚本中打印了sys.path
,并且它正确包含当前工作目录(''
)。from utils.custom_object_functions import ...
应该有效。apx-cv
)。utils.utils
没有造成问题,因为我排除了所有与utils
相关的方法。即使如此,我仍然无法导入models
。脚本应该在没有
ModuleNotFoundError
的情况下运行,因为 utils
模块位于正确的位置,并且 sys.path
似乎已正确设置。
包含空字符串“”,我理解它应该代表当前工作目录。sys.path
仅当您在本地目录中的文件上运行 python 时,这才是正确的,如下所示:
python myscript.py
但是你正在像这样运行Python:
python test/run_files_ee-opt.py
所以在这种情况下,
sys.path
不包含空字符串,它包含字符串“test”。