Python绝对路径导入遇ModuleNotFoundError问题求助
Python绝对导入失败问题求助
我知道这类问题很常见,已经查阅官方文档、Stack Overflow并做了大量搜索,但仍有基础问题阻碍排查,因此放弃自行调试,在此寻求帮助。
项目结构
(venv) jcn@host:~/PycharmProjects/hadr/for_gob_unittests_mocks$ tree . ├── README.md ├── __init__.py ├── logs ├── src │ ├── __init__.py │ ├── common │ │ ├── __pycache__ │ │ │ └── common_mod_00_immutable_cnstnts.cpython-39.pyc │ │ ├── common_mod_00_immutable_cnstnts.py │ │ ├── common_mod_01_parse_resultsxml.py │ │ ├── common_mod_02_logging_tailing.py │ │ └── common_mod_03_setup_swingbench_paramiko.py │ ├── main.py │ ├── main_absl_refactored.py │ ├── main_args.py │ ├── scenarios │ │ └── scenario_mod_01_instancedown.py │ └── user_inputs.json └── tests ├── __init__.py └── test_args.py
导入尝试与错误
我尝试使用Python的绝对导入导入for_gob_unittests_mocks/src/main_absl_refactored.py中的函数。
目标文件代码(main_absl_refactored.py)
def parse_cmd_line_flags() -> dict: return {'a': 1}
初始测试文件代码(test_args.py)
from for_gob_unittests_mocks.src.main_absl_refactored import parse_cmd_line_flags
执行命令python tests/test_args.py时出现错误:
(venv) jcn@host:~/PycharmProjects/hadr/for_gob_unittests_mocks$ python tests/test_args.py Traceback (most recent call last): File "/home/jcn/PycharmProjects/hadr/for_gob_unittests_mocks/tests/test_args.py", line 3, in <module> from for_gob_unittests_mocks.src.main_absl_refactored import parse_cmd_line_flags ModuleNotFoundError: No module named 'for_gob_unittests_mocks'
尝试添加sys.path仍失败
我尝试将目录/home/jcn/PycharmProjects/hadr/for_gob_unittests_mocks添加到Python的sys.path中,但问题未解决。
修改后的test_args.py内容:
import sys, pathlib print(sys.path) curr_dir_obj = pathlib.Path(__file__ ).absolute() sys.path.append(str(curr_dir_obj.parent.parent)) print(sys.path) from for_gob_unittests_mocks.src.main_absl_refactored import parse_cmd_line_flags
执行后仍出现相同错误,sys.path信息如下:
(venv) jcn@host:~/PycharmProjects/hadr/for_gob_unittests_mocks$ python tests/test_args.py ['/home/jcn/PycharmProjects/hadr/for_gob_unittests_mocks/tests', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/home/jcn/PycharmProjects/hadr/venv/lib/python3.9/site-packages'] ['/home/jcn/PycharmProjects/hadr/for_gob_unittests_mocks/tests', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/home/jcn/PycharmProjects/hadr/venv/lib/python3.9/site-packages', '/home/jcn/PycharmProjects/hadr/for_gob_unittests_mocks'] Traceback (most recent call last): File "/home/jcn/PycharmProjects/hadr/for_gob_unittests_mocks/tests/test_args.py", line 12, in <module> from for_gob_unittests_mocks.src.main_absl_refactored import parse_cmd_line_flags ModuleNotFoundError: No module named 'for_gob_unittests_mocks'
内容的提问来源于stack exchange,提问作者Jcnars
相关产品推荐
相关产品推荐

