首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >py.test找不到模块

py.test找不到模块
EN

Stack Overflow用户
提问于 2015-03-20 10:21:10
回答 3查看 17.2K关注 0票数 15

这个问题与下列问题有关,但没有得到答复:

我有一个python模块,它的树结构如下:

代码语言:javascript
复制
mcts
|- setup.py
|- mcts
 |- __init__.py
 |- uct.py
 |- toy_world_state.py
 |- test
  |- test_uct.py
  |- test_toy_world_state.py

我在某个目录中创建了一个虚拟环境。

代码语言:javascript
复制
$ mkdir virtual
$ virtualenv --system-site-packages virtual
$ source virtual/bin/activate

然后我安装我的软件包:

代码语言:javascript
复制
$ cd /path/to/mcts
$ pip install -e .

现在我试着运行这些测试:

代码语言:javascript
复制
$ py.test mcts
================================================== test session starts ==================================================
platform linux -- Python 3.4.2 -- py-1.4.26 -- pytest-2.6.4
collected 0 items / 2 errors 

======================================================== ERRORS =========================================================
__________________________________ ERROR collecting mcts/test/test_toy_world_state.py ___________________________________
mcts/test/test_toy_world_state.py:4: in <module>
    from mcts.toy_world_state import *
E   ImportError: No module named 'mcts'
________________________________________ ERROR collecting mcts/test/test_uct.py _________________________________________
mcts/test/test_uct.py:4: in <module>
    from mcts.uct import *
E   ImportError: No module named 'mcts'
================================================ 2 error in 0.02 seconds ===============================================

如果我转到任何路径并尝试导入ipython中的模块,它可以工作:

代码语言:javascript
复制
$ cd
$ ipython

In [1]: import mcts.uct

In [2]: mcts.uct? 
Type:        module
String form: <module 'mcts.uct' from '/home/johannes/src/mcts/mcts/uct.py'>
File:        /home/johannes/src/mcts/mcts/uct.py
Docstring:   <no docstring>

如果我从内部运行pytest,它就能工作。(但我不知道在侏儒身上会发生什么.)

虽然echo $PYTHONPATH返回空字符串,但sys.path似乎是正确的:

代码语言:javascript
复制
>>> import sys; print(sys.path)
['/home/johannes/src/mcts/virtualenvs/teste/lib/python3.4/site-packages', 
'/home/johannes/src/mcts', '', '/usr/bin', 
'/usr/lib/python3.4/site-packages/GitPython-0.3.2.RC1-py3.4.egg', 
'/usr/lib/python34.zip', '/usr/lib/python3.4', 
'/usr/lib/python3.4/plat-linux', '/usr/lib/python3.4/lib-dynload', 
'/usr/lib/python3.4/site-packages', 
'/usr/lib/python3.4/site-packages/IPython/extensions', 
'/home/johannes/.ipython']

我该怎么做才能让化脓性试验正常运作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-24 13:29:32

我自己修的。由于某种原因,pytest没有得到虚拟not的正确。在虚拟环境中安装pytest解决了这个问题。

代码语言:javascript
复制
source virtualenvs/teste/bin/activate
pip install pytest
票数 15
EN

Stack Overflow用户

发布于 2016-07-15 13:59:22

我创造这个是为了回答你的问题和我自己的困惑。希望能帮上忙。请注意py.test命令行和tox.ini中的PYTHONPATH。

test

具体而言:你必须告诉py.test和毒理在哪里找到你包括的模块。

使用py.test,您可以这样做:

代码语言:javascript
复制
PYTHONPATH=. py.test

使用毒物检验,将其添加到您的tox.ini中:

代码语言:javascript
复制
[testenv]
deps= -r{toxinidir}/requirements.txt
commands=py.test
setenv =
    PYTHONPATH = {toxinidir}
票数 5
EN

Stack Overflow用户

发布于 2016-09-29 17:10:20

您的错误消息是:

ImportError:没有名为“mcts”的模块

查看您提供的目录结构,该错误告诉您您没有“mcts”模块/包。要修复它,您需要向'mcts‘目录添加一个"__init__.py“文件。之后,您应该能够在没有其他参数/设置的情况下运行“py.test”。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29164213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档