我有一个文件foo.py
导入requests包,并定义了一个类Foo。
我可以从Python REPL中运行这个类,但是当我运行nosetests时,它会因错误而失败:
ImportError: No module named requests
这是我的目录结构:
.
./mvp
./mvp/__init__.py
./mvp/foo.py
./mvp/tests
./mvp/tests/__init__.py
./mvp/tests/test_foo.py
这是文件./mvp/__init__.py
:
➜ mvp cat mvp/__init__.py
from .foo import Foo
➜ mvp
这是我要测试的文件:
➜ mvp cat mvp/foo.py
import requests
class Foo(object):
def foo(self):
return True
➜ mvp
./mvp/tests/__init__.py
是一个空文件。
这是我的测试文件:
➜ mvp cat mvp/tests/test_foo.py
from mvp import Foo
def test_foo():
f = Foo()
assert f.foo()
➜ mvp
从Python REPL运行:
>>> from mvp import Foo
>>> f = Foo()
>>> f
<mvp.foo.Foo object at 0x1012ba1d0>
>>>
但是,运行nosetests
失败:
(.env)➜ mvp nosetests
E
======================================================================
ERROR: Failure: ImportError (No module named requests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/nose/loader.py", line 414, in loadTestsFromName
addr.filename, addr.module)
File "/Library/Python/2.7/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/Library/Python/2.7/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/Users/foobar/Coding/mvp/mvp/__init__.py", line 1, in <module>
from .foo import Foo
File "/Users/foobar/Coding/mvp/mvp/foo.py", line 1, in <module>
import requests
ImportError: No module named requests
----------------------------------------------------------------------
Ran 1 test in 0.006s
FAILED (errors=1)
我参加了virtualenv,并安装了requests
:
(.env)➜ mvp pip freeze
requests==2.2.1
wsgiref==0.1.2
(.env)➜ mvp
运行nosetests -P
也会导致同样的错误。我在这里不知所措,花了很长时间在google上搜索没有运气。
如果我注释掉import requests
行,nosetests
就可以了。
mvp
是我创建的用于重现错误的最小项目。如果需要,我可以将它推送到github。
答案 0 :(得分:3)
确保安装了nosetests的python版本与安装请求的版本相同。