- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个与在 pycharm 中使用 uvicorn 的 FastAPI 有关的问题。我的项目具有以下结构:
LearningPy <folder name>
|
|-- apis <folder name>
-----|--modelservice <folder name>
---------|--dataprovider.py
---------|--main.py
---------|--persondetails.py
-----|--config.py
首先,我使用以下路径:D:\Learnings\apis 并运行以下代码:uvicorn main:app --reload然后它给出了错误:
Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Started reloader process [23445]
Error loading ASGI app. Could not import module "apis".
但是,在阅读了 here 的建议之后,我已经将路径更改为 D:\Learnings\apis\modeservice 并且上面的错误消失了,但现在它开始抛出一个不同的错误:ModuleNotFoundError: 没有名为“apis”的模块
这是我的 main.py 和 config.py 代码文件:
主.py--
import uvicorn
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
from datetime import datetime
from apis import config
from apis.modelservice import dataprovider
app = FastAPI(debug=True)
def get_application() -> FastAPI:
application = FastAPI(title="PersonProfile", description="Learning Python CRUD",version="0.1.0")
origins = [
config.API_CONFIG["origin_local_ip"],
config.API_CONFIG["origin_local_url"]
]
application.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
#application.include_router(processA.router)
return application
app = get_application()
@app.get("/")
def read_root():
return {"main": "API Server " + datetime.now().strftime("%Y%m%d %H:%M:%S")}
@app.get("/dbcheck")
def read_root():
try:
dataprovider.get_db().get_collection("Person")
except Exception as e:
return {"failed":e}
else:
return { "connected":True}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000, reload=True)
这是 config.py--
API_CONFIG = {
"origin_local_ip": "http://127.0.0.1:3000",
"origin_local_url": "http://localhost:3000"
}
本项目基于React+Mongo+python构建(pymongo用于连接mongodb)。
提前致谢。
最佳答案
你的应用程序中的问题是你的模块组织,首先我尝试了你的文件夹结构我得到了和你一样的错误,我调试了一下,我发现错误是在导入配置时所以我更深入地了解为什么Python 无法导入您的配置,
我在顶层文件夹中创建了一个脚本来找出原因。还在 config.py
和 modelservice.main.py
print('__file__={0:<35} | __name__={1:<20} | __package__={2<20}'.format(__file__,__name__,str(__package__)))
import apis.config
import apis.modelservice.main
这是结构
apis
├── config.py
└── modelservice
└── main.py
我在名为 main.py 的顶级文件夹脚本中运行脚本,结果如下:
__file__=main.py | __name__=__main__ | __package__=None
__file__=/home/yagiz/Desktop/test/apis/config.py | __name__=apis.config | package__=apis
apis.config
__file__=/home/yagiz/Desktop/test/apis/modelservice/main.py | __name__=apis.modelservice.main | __package__=apis.modelservice
这感觉很奇怪,因为我应该能够相对导入,但是当我尝试导入那个东西时
from .. import config
它返回:
File "./main.py", line 8, in <module>
from .. import config
ImportError: attempted relative import with no known parent package
只是为了测试它,我尝试了这个结构,我也使用了绝对导入 import config:
apis/
├── modelservice
├── config.py
├── main.py
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [14155] using statreload
__file__=./main.py | __name__=main | __package__=
__file__=./config.py | __name__=config | __package__= config
INFO: Started server process [14157]
INFO: Waiting for application startup.
INFO: Application startup complete.
一切都像那样工作得很好,所以问题出在你的模块组织以及你如何导入东西,所以再看看它们。
关于python - FastAPI 说缺少文件夹名称作为模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62965442/
我正在编写一个 JS 程序,我有一个条件可以根据输入进行一些算术运算。如果我遇到操作类型为“add”,我需要将两个值相加;如果我得到“times”作为我的运算符值,我需要相乘。 我尝试使用基本的 if
我正在编写一个仅作为查看器的应用程序 - 无需创建、无需编辑、无需保存。 显然,那么,不会有自动保存,但是还有什么其他东西可以从 autosavesInPlace 返回 YES 改变世界,从而对观看者
Azure 开始出现以下错误: Unsupported token. Unable to initialize the authorization context. 每当我尝试更改我的应用程序时,我都
当我编写 out.println() 时,Eclipse 提示 out 无法解析。 我导入了 java.io.* 和其他 servlet 包。 最佳答案 只是在黑暗中拍摄,我认为这就是您正在寻找的出路
Azure 开始出现以下错误: Unsupported token. Unable to initialize the authorization context. 每当我尝试更改我的应用程序时,我都
是否可以执行类似的操作来检查 radio 表单是否未选中: if !($(this).find("input:checked")) {} 正确的语法是什么? 最佳答案 试试这个: $(this).fi
我正在尝试从表中选择行,其中 date 列值等于澳大利亚悉尼的当前日期 (UTC+10h)。服务器位于悉尼,因此我想使用 SYSDATETIME()。这是我的查询: SELECT * FROM dat
我听说 JavaScript 实际上并不像其他语言那样“指向”内存中的值(或对象,因为在 JS 中一切都是对象)。相反,JS 变量引用内存中的其他值/对象。这是真的?指向和引用之间的语义区别是什么?
我的计算机科学类(class)有一项作业,其中要求读取包含多个测试分数的文件,并要求我对它们进行求和并求平均值。虽然求和和求平均值很容易,但我在读取文件时遇到问题。老师说用这个语法 Scanner s
Java 的 XML 解析器似乎认为我的 XML 文档在根元素之后的格式不正确。但我已经用几种工具验证了它,但他们都不同意。这可能是我的代码错误,而不是文档本身的错误。如果你们能给我提供任何帮助,我将
根据这份文件: http://www.stroustrup.com/terminology.pdf l 值具有同一性且不可移动。 公关值是可移动的,但没有身份。 x 值具有同一性并且是可移动的。 关于
这个问题在这里已经有了答案: What does "atomic" mean in programming? (7 个答案) 关闭 5 年前。 我正在阅读 MongoDB 的 documentati
在 PHP 和 MySQL 中有没有一种方法能够比较 2 个不同的数组(列表)变量并说出有多少项是相同的 例如, $array1 = "hello, bye, google, laptop, yes"
本文来自 Effective Java Programs that use the int enum pattern are brittle. Because int enums are compil
C++ 中有一些特性是类型安全的,而另一些则不是。 C++ 类型安全示例: char c = 'a'; int *p = &c; // this is not allowed (compiler
我有一个 CS 课的作业,它说要读取一个包含多个测试分数的文件,并要求我对它们求和并取平均值。虽然求和和平均很容易,但我在读取文件时遇到了问题。老师说要用这个语法 Scanner scores = n
嗯.. 有时,PyDev 会说“ Unresolved 导入错误”。 在我的环境中 Python2.6.6 Eclipse3.7 PyDev2.2.2 错误是。 > Unresolved import
我正在向服务器发送请求,服务器正在处理请求并做出响应。但是在我的应用程序中,我收到了: Error Domain=NSURLErrorDomain Code=-1017 "cannot parse r
在我最近的一次讨论中,有人告诉我这样说是不正确的,因为 Ajax 已经是 Javascript。 上下文: “我如何在网页中 blablababal,这样它就不必刷新页面” 我的回答: “使用 Jav
下午好。 我一直在尝试使用 ffmpeg 将 .mpeg 拆分为一系列 .jpeg 图像。请注意,这是指定 here 的逆问题,但我面临的问题与该线程的作者面临的问题不同。 具体来说,我已经在我的 f
我是一名优秀的程序员,十分优秀!