我发现有很多类似的帖子。但是,这些帖子没有解决我的问题。所以我想问一下有关我的问题的问题。我的问题是单元测试和导入模块。我的项目有以下层次结构。
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 import 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
>>>
我不知道错误是什么。有人有猜测吗?
答案 0 :(得分:0)
运行python时,请确保您当前的工作目录是app目录,否则from Bio import PDB
可能因其他原因而起作用。您可以使用os.chdir
移至app
目录,然后尝试导入并查看它是否仍然有效。
另外 - Bio
位于哪里?
编辑:根据您的评论,问题是由使用不同版本的Python引起的
为了找出您正在使用的版本,您只需print sys.version
即可。确保在失败的import
行之前执行此操作:
import sys
print sys.version
from Bio import PDB
无论如何,更改所使用的Python版本的问题已在此处得到解答:Two versions of python on linux. how to make 2.7 the default。
答案 1 :(得分:0)
我找到了答案。主要问题是py.test默认使用python2.6,并且在执行“from Bio import PDB”时也会引发错误。但是,Python2.7在执行相同命令时不会引发任何错误。在选择不同版本的python时做出选择。使用命令创建独立pytest脚本,然后运行
py.test --genscript=curpytest
python curpytest
它解决了导入Bio的错误。