首先让我说我知道这个问题已经讨论过了,但是我找不到与我的情况类似的解决方案。
我的目录结构如下:
我需要使用相对路径将constants.py,check_lib.py和tool_name.py导入my_test.py。即使我的几个模块位于项目中不同目录的不同深度中,也有办法做到这一点吗?我正在尝试直接在代码中使用“ from module.path import module”类型的导入来执行此操作。任何帮助将不胜感激!
MY解决方案如下:
tool_name.py
print(“导入的tool_name.py”)
constants.py
打印(“ constants.py已导入”)
check_lib.py
print(“已导入的check_lib.py”)
my_test.py
导入常量
导入common.check_lib导入系统
导入操作系统
sys.path.append(os.path.abspath('test_project / tools / my_tool'))导入工具名称
输出:
constants.py已导入
check_lib.py已导入
tool_name.py已导入
my_test.py正在运行
答案 0 :(得分:0)
使用PYTHONPATH=.
,转到“项目”上一级的目录。
使用稍长的名称调用您的代码,例如$ python -m project.tools.my_tool.tool_name
。
这样,由于“工具”代码仍在“项目”中,因此将被允许访问“测试”。
答案 1 :(得分:0)
tool_name.py
print("tool_name.py imported")
constants.py
print("constants.py imported")
check_lib.py
print("check_lib.py imported")
my_test.py
import constants
import common.check_lib
from sys import path as external_import
external_import.append("../../tools/my_tool/")
import tool_name
print("my_test.py is running")
输出:
constants.py imported
check_lib.py imported
tool_name.py imported
my_test.py is running