python-3.x - ModuleNotFoundError:没有命名的模块
问题描述
例如,conftest.py
我正在加载模块blueprint.Manifest
,然后加载模块Head
。请参阅描述底部的最小示例。但我收到以下错误:
$ py.test manifest/test_schema.py
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/_pytest/config/__init__.py", line 381, in _getconftestmodules
return self._path2confmods[path]
KeyError: local('/home/app/ip-spotlight/code/cicd/lydia/manifest/test_schema.py')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/_pytest/config/__init__.py", line 381, in _getconftestmodules
return self._path2confmods[path]
KeyError: local('/home/app/ip-spotlight/code/cicd/lydia/manifest')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/_pytest/config/__init__.py", line 412, in _importconftest
return self._conftestpath2mod[conftestpath]
KeyError: local('/home/app/ip-spotlight/code/cicd/lydia/conftest.py')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/_pytest/config/__init__.py", line 418, in _importconftest
mod = conftestpath.pyimport()
File "/usr/lib/python3.6/site-packages/py/_path/local.py", line 668, in pyimport
__import__(modname)
File "/usr/lib/python3.6/site-packages/_pytest/assertion/rewrite.py", line 296, in load_module
six.exec_(co, mod.__dict__)
File "/home/app/ip-spotlight/code/cicd/lydia/conftest.py", line 5, in <module>
from blueprint.Manifest import ManifestSchema
File "/home/app/ip-spotlight/code/cicd/lydia/blueprint/Manifest.py", line 5, in <module>
from Head import HeadSchema
ModuleNotFoundError: No module named 'Head'
ERROR: could not load /home/app/ip-spotlight/code/cicd/lydia/conftest.py
我现在的环境是
$ py.test --version
This is pytest version 3.8.0, imported from /usr/lib/python3.6/site-packages/pytest.py
setuptools registered plugins:
pytest-xdist-1.23.0 at /usr/lib/python3.6/site-packages/xdist/plugin.py
pytest-xdist-1.23.0 at /usr/lib/python3.6/site-packages/xdist/looponfail.py
pytest-timeout-1.3.2 at /usr/lib/python3.6/site-packages/pytest_timeout.py
pytest-sugar-0.9.1 at /usr/lib/python3.6/site-packages/pytest_sugar.py
pytest-metadata-1.7.0 at /usr/lib/python3.6/site-packages/pytest_metadata/plugin.py
pytest-html-1.19.0 at /usr/lib/python3.6/site-packages/pytest_html/plugin.py
pytest-forked-0.2 at /usr/lib/python3.6/site-packages/pytest_forked/__init__.py
celery-4.2.1 at /usr/lib/python3.6/site-packages/celery/contrib/pytest.py
最小的例子:我的项目结构是这样的:
$ tree
.
|-- attributes
| `-- __init__.py
|-- bgp
| `-- __init__.py
|-- blueprint
| |-- Head.py
| |-- __init__.py
| |-- InterfacesIx.py
| |-- InterfacesLacp.py
| |-- Manifest.py
| |-- NeighborIx.py
| `-- Tail.py
|-- communities
| `-- __init__.py
|-- conftest.py
|-- customize
| `-- __init__.py
|-- interfaces
| `-- __init__.py
|-- manifest
| |-- blueprint
| |-- __init__.py
| `-- test_schema.py
|-- policies
| `-- __init__.py
|-- prefixes
| `-- __init__.py
`-- pytest.ini
conftest.py
看起来像这样:
import os
import yaml
import pytest
from blueprint.Manifest import ManifestSchema
@pytest.fixture(scope="session")
def manifest():
with open(
"{}/ip-spotlight/code/cicd/manifest.yaml".format(os.environ["APPFOLDER"]), "rt"
) as f:
manifest = yaml.safe_load(f.read())
schema = ManifestSchema()
appobj = schema.load(manifest)
return appobj
blueprint/Manifest.py
看起来像这样:
import marshmallow
import dictdiffer
import requests
from Head import HeadSchema
你能告诉我我做错了什么并帮助我解决这个问题吗?
解决方案
推荐阅读
- python - 当字符串和子字符串的长度相等时,Python 中的字符串 find() 是否不起作用?
- python - TypeError:无法将 str 连接到字节
- excel - 如何创建包含条件格式的用户表单表?
- laravel - 如何用你的包语言覆盖 Laravel 的语言文件
- api - 适用于移动设备和 Web 的安全 API
- unit-testing - 在 go 中测试连接的正确方法
- batch-file - 检查内容和文件名的批处理脚本
- python - 逐行读取csv文件并保存满足特定条件的行
- ffmpeg - VLC播放器如何计算fmp4文件时间线的总长度?
- react-native - 看起来应用程序无权访问本机反应中的位置