python3从linux上的包导入进行测试

时间:2016-03-22 20:10:35

标签: python python-3.x package

我有这样的目录结构:

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")

有人可以告诉我问题是什么,我该怎么办?

谢谢!

1 个答案:

答案 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