`ModuleNotFoundError` 当使用自定义模块运行 Python 脚本时,尽管正确的 `sys.path` 设置和 conda 环境

问题描述 投票:0回答:1

问题

我正在开发一个具有以下结构的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
。我认为我错过了一些非常基本的东西,但我不是一个很强的计算机程序员,所以我知道的不多。

我尝试过的事情:

  1. 已验证
    sys.path
    :我在脚本中打印了
    sys.path
    ,并且它正确包含当前工作目录(
    ''
    )。
  2. 绝对导入:我确保使用绝对导入(而不是相对导入),因此
    from utils.custom_object_functions import ...
    应该有效。
  3. 检查工作目录:我在运行脚本时确认工作目录是项目根目录(
    apx-cv
    )。
  4. 还检查了
    utils.utils
    没有造成问题,因为我排除了所有与
    utils
    相关的方法。即使如此,我仍然无法导入
    models

脚本应该在没有

ModuleNotFoundError
的情况下运行,因为
utils
模块位于正确的位置,并且
sys.path
似乎已正确设置。

python module conda importerror sys.path
1个回答
0
投票

sys.path
包含空字符串“”,我理解它应该代表当前工作目录。

仅当您在本地目录中的文件上运行 python 时,这才是正确的,如下所示:

python myscript.py

但是你正在像这样运行Python:

python test/run_files_ee-opt.py

所以在这种情况下,

sys.path
不包含空字符串,它包含字符串“test”。

© www.soinside.com 2019 - 2024. All rights reserved.