python3 从 linux 上的包导入以进行测试
python3 importing from package on linux for tests
我有这个目录结构:
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
我正在尝试从测试文件夹中 运行 test_file.py,如下所示:
python3 test_file.py
但无论我怎么试,都行不通:
"No module named MyPackage"(对于"MyPackage.src.file")
"Parent module '' not loaded, cannot perform relative import"(如果我使用“..src.file”)
谁能告诉我问题出在哪里,我该怎么办?
谢谢!
您可以使用 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
编辑:如果您总是从包 basedir..
执行
$ cd MyPackage
$ python tests/test_file.py
..包 basedir 应该包含在你的 PYTHONPATH 中并且导入应该像这样工作
from src.file import MyClass
我在某些系统上遇到过问题,当前目录没有自动添加到 PYTHONPATH。显式设置 PYTHONPATH 有帮助
$ PYTHONPATH=. python tests/test_file.py
我有这个目录结构:
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
我正在尝试从测试文件夹中 运行 test_file.py,如下所示:
python3 test_file.py
但无论我怎么试,都行不通:
"No module named MyPackage"(对于"MyPackage.src.file")
"Parent module '' not loaded, cannot perform relative import"(如果我使用“..src.file”)
谁能告诉我问题出在哪里,我该怎么办?
谢谢!
您可以使用 sys.path.append()
手动将模块 basedir 添加到 PYTHONPATHimport 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
编辑:如果您总是从包 basedir..
执行$ cd MyPackage
$ python tests/test_file.py
..包 basedir 应该包含在你的 PYTHONPATH 中并且导入应该像这样工作
from src.file import MyClass
我在某些系统上遇到过问题,当前目录没有自动添加到 PYTHONPATH。显式设置 PYTHONPATH 有帮助
$ PYTHONPATH=. python tests/test_file.py