我想做的事情看起来很简单,但真正实现却非常困难。我有一个在 docker-compose 环境中运行的 Django 应用程序,我想在 Vscode 中使用断点运行和调试单元测试。
由于这是一个大项目,团队不一定使用 vscode,因此我无法随意添加库(例如 ptvsd)。我希望有一个神奇的配置tasks.json,launch.json可以让事情顺利进行。
我有一个用于 postgres 数据库的容器,一个用于 django,一个用于 redis,所有这些都在 docker-compose.yml 中定义。我可以在终端中运行一个命令来运行测试,它是:
docker-compose run --rm app python manage.py test
Run Code Online (Sandbox Code Playgroud)
appdjango 应用程序容器在哪里。我希望能够以能够在 vscode 中命中断点的方式运行此命令。
我对launch.json文件的不完整分析如下所示:
docker-compose run --rm app python manage.py test
Run Code Online (Sandbox Code Playgroud)
和我的tasks.json:
{
"configurations": [{
"name": "Docker: Python - Django",
"type": "docker",
"request": "launch",
"preLaunchTask": "compose-for-debug",
"python": {
"pathMappings": [{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}],
"projectType": "django"
}
}]
}
Run Code Online (Sandbox Code Playgroud)
我想我需要以某种方式将构建任务转换为 docker compose 任务,但我只是不知道它是如何完成的。在终端中运行容器并以某种方式使 vscode 在启用断点的情况下附加到它们也可能是有意义的。 …
在 FastAPI 应用程序中创建模型时,我正在努力获取创建 UUID 字段的语法。我正在使用SQLModel。
基本上,我的 models.py 文件如下所示:
from datetime import datetime
from typing import Optional
import uuid
from sqlalchemy import Column, DateTime
from sqlalchemy.dialects import postgresql as psql
from sqlmodel import SQLModel, Field
class ModelBase(SQLModel):
"""
Base class for database models.
"""
id: Optional[int] = Field(default=None, primary_key=True)
created_at: datetime = Field(sa_column=Column(DateTime(timezone=True), default=datetime.utcnow))
updated_at: datetime = Field(sa_column=Column(DateTime(timezone=True),
onupdate=datetime.utcnow, default=datetime.utcnow))
class UUIDModelBase(ModelBase, table=True):
"""
Base class for UUID-based models.
"""
uuid: uuid.UUID = Field(sa_column=Column(psql.UUID(as_uuid=True)), default=uuid.uuid4)
Run Code Online (Sandbox Code Playgroud)
上述错误与
AttributeError: 'FieldInfo' object …Run Code Online (Sandbox Code Playgroud) 我对 npm 和 node.js 完全陌生,所以如果我没有提供正确的细节,请原谅我。我正在为一个网站编写一个插件,该网站使用 npm 中的开箱即用框架。当我愉快地编码时,它工作得很好,但在某些时候它开始尝试编译一个不再存在的文件。
\n\n我用来npm run start编译我的 html 文件(其中也包含所有 javascript 代码)并收到此错误:
\xe2\x84\xb9 info Compiler will compile ./src/plugin.html\n\xe2\x84\xb9 info Transpiling with babel\n \xe2\x9c\x96 error Error\n SyntaxError: unknown: Unexpected token (555:3)\n\n 553 | \n 554 | \n > 555 | });\n | ^\nRun Code Online (Sandbox Code Playgroud)\n\n让我伤脑筋的是这个简单的语法错误不存在于./src/plugin.html(我已经四次检查了这个事实)。这显然属于该文件的早期版本。
npm 是否有某种缓存会导致它编译旧版本的文件?我注意到,如果删除大部分代码,它会再次编译,但是当我替换代码时,它会再次中断。看起来,如果文件与其缓存版本有些相似,它会尝试编译缓存版本而不是当前版本。
\n\n我尝试过清除缓存npm --force cache clear但没有效果。
有什么建议么?
\n假设我有一个带有基本 get 请求的 FastAPI 路由,如下所示:
@router.get("/reports")
async def get_reports(request: Request) -> Dict:
return
Run Code Online (Sandbox Code Playgroud)
我想用以下方法测试它:
def test_method_can_access_request_fields():
client = TestClient()
response = client.get("/")
Run Code Online (Sandbox Code Playgroud)
现在,如果您检查request路由中的变量,您将看到一个starlette.requests.request对象。该对象有一个 Dict 字段,request.scope.
我们使用 Mangum 将应用程序作为 AWS 上的 Lambda 提供服务,并且我们的实际应用程序能够接收调用aws.event此对象的字段 ( docs )。我正在尝试弄清楚如何为端点编写测试。
我想我想做的是以某种方式修改传入的字典以使用 TestClientrequest.scope包含此自定义字段。aws.event
有没有办法将某些内容传递到测试配置中,从而将自定义字段传播到对象中Request?
我是虚拟环境的粉丝,我也喜欢将我的virtualenvs 保留在项目根目录中。这有助于我跟踪它们的位置,并允许我给它们起通用名称,例如.venv.
但我需要一种方法来安装特定版本的 python 以便与我的virtualenvs 一起使用。所有的道路似乎都指向pyenv。
除非我误解了如何工作pyenv和pyenv-virtualenv工作,否则这个库似乎坚持将我的实际 virtualenv 埋在~/.pyenv文件夹中的某个位置,并给我留下一个.python-version我不想拥有的文件。
有没有一种方法可以方便地安装特定版本的python pyenv,然后在我的项目目录中以传统方式创建我的虚拟环境,从而在pyenv创建虚拟环境后消除我的项目的依赖?
我正在运行 Ubuntu 20.04,我想使用 Python 3.10 启动一个项目。我使用了 Python 3.10 的安装指南(这个),使用 deadsnakes PPA 安装它,这很好:
$ python3.10
Python 3.10.5 (main, Jun 11 2022, 16:53:24) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Run Code Online (Sandbox Code Playgroud)
为了更好的衡量,我什至将我的默认 python 切换到 3.10,使用this,这也有效。
$ python
Python 3.10.5 (main, Jun 11 2022, 16:53:24) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Run Code Online (Sandbox Code Playgroud)
但我无法构建虚拟环境:
$ virtualenv myenv -p python3.10
RuntimeError: failed to find interpreter for Builtin discover …Run Code Online (Sandbox Code Playgroud) python ×4
fastapi ×2
virtualenv ×2
django ×1
docker ×1
javascript ×1
node.js ×1
npm ×1
postgresql ×1
pyenv ×1
pytest ×1
python-3.10 ×1
sqlalchemy ×1
sqlmodel ×1
starlette ×1
ubuntu ×1