Python单元测试和导入错误
我发现有很多类似的帖子。然而,这些帖子并没有解决我的问题。所以我想问一个关于我问题的问题。我的问题是单元测试和导入模块。我的项目具有以下层次结构Python单元测试和导入错误,python,import,pytest,unit-testing,Python,Import,Pytest,Unit Testing,我发现有很多类似的帖子。然而,这些帖子并没有解决我的问题。所以我想问一个关于我问题的问题。我的问题是单元测试和导入模块。我的项目具有以下层次结构 app/ __init__.py src/ __init__.py person.py tests/ __init__.py test_person.py 我使用pytest进行单元测试。内部测试/test_person.py ## tests/test_person.py
app/
__init__.py
src/
__init__.py
person.py
tests/
__init__.py
test_person.py
我使用pytest进行单元测试。内部测试/test_person.py
## tests/test_person.py
from ..src import person
内部src/person.py
## src/person.py
from Bio import PDB
从app/,我运行py.test并得到了错误
from Bio import PDB
E ImportError: No module named Bio
我在命令行中进一步测试,以检查是否可以从Bio导入PDB。它可以被导入而没有任何错误
Python 2.7.4 (default, May 14 2013, 09:41:12)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from Bio import PDB
>>>
我不知道是什么错误。有人有任何猜测吗?运行python时,请确保您当前的工作目录是应用程序目录,否则来自Bio import PDB的
可能由于其他原因工作。您可以使用os.chdir
移动到app
目录,然后尝试导入并查看它是否仍然有效。
还有-Bio的位置在哪里
编辑:根据您的评论,该问题是由使用不同版本的Python引起的。
为了找出您正在使用的版本,您只需打印sys.version
。确保在导入失败的行之前执行此操作:
import sys
print sys.version
from Bio import PDB
无论如何,这里已经回答了更改使用的Python版本的问题:。我找到了答案。主要问题是py.test默认使用python2.6,并且在执行“from Bio import PDB”时也会引发错误。但是,Python2.7在执行同一命令时不会引发任何错误。选择不同版本的python。使用命令创建独立的pytest脚本,然后运行
py.test --genscript=curpytest
python curpytest
它解决了导入Bio的错误。当您使用命令行时,是什么导致Bio
成功导入的?更新:在我的系统中,由于程序的依赖性,我将python的版本改为python-Python2.6和Python2.7。我在/usr/bin/中安装了python2.6,在/usr/local/bin中安装了python2.7。现在,当我使用python2.6时,没有出现模块错误-来自Bio导入PDB。由于py.test也安装在/user/bin,所以当默认使用py.test时,我认为它使用/usr/bin中的python,而不是我的默认路径/usr/local/bin。您能告诉我如何知道py.test使用的是什么(哪种python)吗?如何在py.test中自定义库路径?