- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 OpenAPI 3.0规范,我想将其与 Connexion 一起使用运行 Python 服务。
API 规范的相关部分在这里:
paths:
/find:
post:
summary: XXX
description: XXX
operationId: service.controllers.api.find
requestBody:
content:
application/json:
schema:
type: object
[...]
servers:
- url: /v2
[...]
Python 代码的结构如下:
├── lib
│ └── service
│ ├── controllers
│ │ ├── api.py
│ │ ├── __init__.py
│ ├── __init__.py
│ ├── models
│ │ └── __init__.py
│ └── resources
│ └── openapi
│ └── openapi.yaml
api.py
的内容:
def find():
return "TEST"
find
函数本身按预期工作:
import service.controllers.api
service.controllers.api.find_skills()
'TEST'
在 Python 中,Connexion 可以很好地加载 API:
import connexion
app = connexion.FlaskApp(__name__,
specification_dir='lib/service/resources/openapi/')
app.add_api('openapi.yaml')
<connexion.apis.flask_api.FlaskApi at 0x7f2241e35b38>
app.run()
现在,我可以成功调用端点:
$ curl -X POST http://localhost:5000/v2/find
但是,当我使用 Connexion CLI 运行它时,我看到一个 ModuleNotFoundError
:
$ connexion run lib/service/resources/openapi/openapi.yaml
输出:
ERROR:connexion.apis.abstract:Failed to add operation for POST /v2/find
Traceback (most recent call last):
File "/home/XXX/anaconda3/envs/find/lib/python3.6/site-packages/connexion/apis/abstract.py", line 206, in add_paths
self.add_operation(path, method)
[...]
File "/home/XXX/anaconda3/envs/find/lib/python3.6/site-packages/connexion/resolver.py", line 64, in resolve_function_from_operation_id
raise ResolverError(msg, sys.exc_info())
connexion.exceptions.ResolverError: <ResolverError: Cannot resolve operationId "service.controllers.api.find"! Import error was "No module named 'service'">
在这种情况下,路径/包名称可能有问题。但是,我也尝试过从 lib
目录等调用它的多种变体,但没有成功。此外,我尝试仅使用方法名称并在 x-swagger-router-controller
属性中指定包,但也没有成功。
我在 Connexion 文档中找不到关于如何正确指定 operationId
的更多具体细节,所以我什至不清楚这是否与 Python 模块本身、OpenAPI 规范有关,或者调用Connexion的方式。
关于从哪里开始挖掘的任何提示?为什么命令行客户端找不到service
模块?模块相对于工作目录应该驻留在何处?
最佳答案
我无法重现您的问题,但我相信这是由于 PYTHONPATH 造成的。
尝试执行:
PYTHONPATH=.连接运行 lib/service/resources/openapi/openapi.yaml
关于python - Connexion 中的 ModuleNotFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55577261/
I have installed WeasyPrint==0.42.3 using pip3 install WeasyPrint==0.42.3, but when I try to impo
我正在从远程服务器设置Jupyter笔记本电脑环境。当我导入Notebook.auth时,它报告错误如下:。我的jupyter参数如下所示:。有人知道如何解决这个问题吗?我已经尝试了pip安装jupy
在运行命令时,我遇到了一个错误:Heroku run pythonManage.py Migrate。当我运行它时,它会出现错误:ModuleNotFoundError:没有名为‘Django’的模块
PC:Windows 11 WSL 2,ubuntu-22.04。我打算按照这些说明安装'cnntools'。安装后,我对其进行了测试。这件事就发生了。。我的电脑怎么了?我必须买一台新电脑吗?。我试过
我的文件夹结构是: |-fastapi |-app |-calc.py |-tests |-mytest.py 在 mytest.py 中,我尝试导入 calc.py,
假设我们有以下结构: outer_module.py| |subfolder| |__init__.py
我在 conda 中创建了一个新环境并安装了 yaml。 $ conda list | grep yaml yaml 0.1.7
我使用了来自 python-nmap 的 import nmap 模块,它在 Pycharm 中运行良好。 但是当我尝试在命令提示符下运行相同的程序时,出现错误: ModuleNotFoundErro
my_controller.py 如下: from models import Person david = Person('David') 我的项目结构是 app ├── controller │
我已经使用 tensorflow 构建了一个 python 脚本,现在我正在尝试将其转换为 .exe 文件,但遇到了问题。使用 pyinstaller 并从命令提示符运行程序后,我收到以下错误: Fi
我在网络驱动器上安装了 Python。我用了pushd命令进入同一网络驱动器上我的项目文件夹。我在那个文件夹中打开 python。我尝试导入该文件夹中的模块。一个 ModuleNotFoundErro
我的发行版是WinPython,我使用Spyder作为IDLE,我的python版本是3.6.5。 尽管我有很多模块(来自 WinPython 下载),例如 pip、pandas 和 numpy,它们
我在 macOS Mojave 版本 10.14.1 上使用 Python 3.7.1 这是我的目录结构: man/ Mans/
我的文件夹结构: ttsTacotron.py Tacotron-2 |.. |tacotron| |train.py |synthetizer.py
我正在使用 Python 3.6.0 和 pipenv。我在pycharm中有一个名为myapp的python项目,目录结构为 - myapp - src - __init__.py -
我利用自制程序安装 python3,现在无法运行使用关联的 pip3 二进制文件安装的模块。 from blackduck.HubRestApi import HubInstance username
我正在开发 Flask 应用程序并尝试运行我的测试文件,但无法执行此操作。我当前的应用程序结构是: Project ── app │ ├── __init__.py │ ├── forms.p
(在用重复的问题投票标记我之前,请注意,我在这个问题上找到的所有内容都与 virtualenv 有关,而不是 venv) 系统: Ubuntu 服务器 16.04 已安装 Python 3.6,原生
Visual Studio 2017 - 空 Python 项目我的代码如下所示(是的,只有两行): import pandas as pd import Quandl 我已将 Quandl (3.2
我需要 pickle 我已经实例化的 python 类,因此需要使用相对路径。我正在使用 Python 版本 3.6.6。以下是项目结构和代码的示例: modelling/ test.py
我是一名优秀的程序员,十分优秀!