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中自定义库路径?