我有这样的目录结构:
MyPackage/
----/ __init__.py
----/ tests / __init__.py
----/ tests / test_file.py
----/ src /
----/ src / __init__.py
----/ src / file.py
test_file.py中的我试过了:
from ..src.file import MyClass
from MyPackage.src.file import MyClass
我试图从tests文件夹中运行test_file.py,如下所示:
python3 test_file.py
但是无论如何我都尝试过它,它不起作用:
"没有名为MyPackage的模块" (对于" MyPackage.src.file")
"父母模块''未加载,无法执行相对导入" (如果我使用" .. src.file")
有人可以告诉我问题是什么,我该怎么办?
谢谢!
答案 0 :(得分:1)
您可以使用sys.path.append()手动将模块basedir添加到PYTHONPATH
import os
import sys
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
PACKAGE_DIR = SCRIPT_DIR + '/..'
sys.path.append(PACKAGE_DIR)
from src.file import MyClass
编辑:如果你总是从包基础上执行..
$ cd MyPackage
$ python tests/test_file.py
.. package basedir应该包含在你的PYTHONPATH中,导入应该像这样工作
from src.file import MyClass
我在某些系统上遇到了问题,当前目录未自动添加到PYTHONPATH中。明确设置PYTHONPATH帮助
$ PYTHONPATH=. python tests/test_file.py