小编War*_*ame的帖子

如何让 VS Code 将调试标准输出写入调试控制台?

我正在尝试使用左侧栏上的测试活动在 VS Code 中调试我的 Python Pytest 测试。我能够按预期运行测试,有些通过,有些失败。我想调试失败的测试,以更准确地确定导致失败的原因。

当我在调试模式下运行单个测试时,VS Code 正确命中断点并停止,并且“运行和调试”窗格显示局部变量。我可以在“变量”>“本地”窗格中或通过 REPL 通过键入变量名称来观察局部变量的状态。

当我尝试打印任何语句(例如使用)时,> print("here")调试控制台没有得到任何输出。当我引用变量或直接使用字符串时,> "here"我确实看到了调试控制台的输出。

在我看来,我的 REPL 的标准输出没有显示到调试控制台。网上的许多答案都建议添加诸如"redirectOutput": true或 之类的选项"console": "integratedTerminal",但这些似乎都不起作用。我的完整内容launch.json如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "debugOptions": [
                "WaitOnAbnormalExit",
                "WaitOnNormalExit"
            ],
            "console": "integratedTerminal",
            "stopOnEntry": false,
            "redirectOutput": true, …
Run Code Online (Sandbox Code Playgroud)

python pytest visual-studio-code

11
推荐指数
1
解决办法
6296
查看次数

无法通过打开的端口访问 Docker 应用程序

我在容器内有一个烧瓶应用程序。我运行这个容器

docker run -p 5000:5000 pyprojects_web
Run Code Online (Sandbox Code Playgroud)

它回复

 * Serving Flask app "debateit.py"
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)

如果我跑

docker container ls
Run Code Online (Sandbox Code Playgroud)

我得到

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
2221298e6e2c        pyprojects_web      "flask run"         12 minutes ago      Up 12 minutes       0.0.0.0:5000->5000/tcp   elated_joliot
Run Code Online (Sandbox Code Playgroud)

如果我访问http://127.0.0.1:5000我得到:

This site can’t be reached
The web page …
Run Code Online (Sandbox Code Playgroud)

networking flask docker

5
推荐指数
1
解决办法
1843
查看次数

对 SBT 中构建的项目使用通用测试实用程序文件

给定一个使用build.sbt文件的项目,我希望有一个TestUtils.scala集成和单元测试都依赖的通用文件。

我的 src 文件夹位于src/scala,集成测试文件夹位于it/scala。我的单元测试文件夹位于test/scala,并且包含公共TestsUtils.scala文件。

目前我正在 Intellij 中通过 ScalaTest 运行我的测试。当我以这种方式运行它时,Intellij 能够确定集成测试文件夹对单元测试文件夹的依赖关系。我正在尝试切换到使用一testit:testSBTunit:test任务。当我这样做时,集成测试文件夹无法编译,因为它找不到通用TestUtils.scala文件。如果我将TestUtils.scala文件复制到集成测试文件夹,那么它会编译,但我不想在两个位置有相同的代码。

以下是我看到的解决此问题的方法:

  1. 将文件复制到两个测试文件夹中(不好)
  2. 将文件移动到src文件夹中(引入我希望避免的依赖srcscalatest
  3. 找到一种方法让integration文件夹使用文件夹中的文件test(不知道该怎么做)

理想情况下,我想使用第三种方法,但不知道如何实际实现它。如何让一个文件夹使用另一个文件夹作为 SBT 中的依赖项?有我不知道的更好方法吗?

integration-testing unit-testing scala sbt

5
推荐指数
1
解决办法
408
查看次数

您可以在 Databricks 池节点上预安装库吗?

我们有许多 Python Databricks 作业,它们都使用相同的底层 Wheel 包来安装其依赖项。即使节点已在池中闲置,安装此 Wheel 软件包仍需要 90 秒。

其中一些作业运行时间非常长,因此我们希望使用作业计算机集群来降低 DBU 的成本。

其中一些作业的运行时间要短得多(<10 秒),其中 90 秒的安装时间似乎更重要。我们一直在考虑使用热集群(通用计算)来完成这些较短的作业。如果可能的话,我们希望避免通用计算的额外成本。

阅读 Databricks 文档表明池中的空闲实例是为我们保留的,但不会消耗我们的 DBU。有没有办法让我们在空闲实例上预安装所需的库,以便当作业完成时我们能够立即开始处理它?

是否有替代方法可以满足类似的用例?

python pool cluster-computing azure databricks

5
推荐指数
1
解决办法
2496
查看次数

尝试在 Docker 中使用 google OAuth2 时没有名为“请求”的模块

我正在尝试将 google OAuth 用于我的网络应用程序。为此,我在我的 venv 和 Docker 构建期间安装了 google-api-python-client 和 google-auth 包(来自 requirements.txt)。尽管如此,当我运行我的应用程序时,它找不到请求模块,抱怨说:

flask.cli.NoAppException: While importing "debateit", an ImportError was raised:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/google/auth/transport/requests.py", line 23, in <module>
    import requests
ImportError: No module named 'requests'
Run Code Online (Sandbox Code Playgroud)

导入如下:

from google.auth.transport import requests
Run Code Online (Sandbox Code Playgroud)

并使用如下:

idinfo = id_token.verify_oauth2_token(token, requests.Request(), app.config["GOOGLE_LOGIN_CLIENT_ID"])
Run Code Online (Sandbox Code Playgroud)

其他导入,如 id_token.verify_oauth2_token 工作正常。

我检查了我的 docker build,它说我已经正确地包含了 google-auth:

Installing collected packages: ... google-auth, httplib2, google-auth-httplib2, google-api-python-client
Successfully installed ... google-api-python-client-1.7.3 google-auth-1.5.0 google-auth-httplib2-0.0.3 httplib2-0.11.3 ...
Run Code Online (Sandbox Code Playgroud)

当我查看 venv 时,我可以清楚地看到 google.auth.transport.requests 模块,它只是在应用程序本身中不起作用。

我错过了什么?什么可能导致找不到此模块?

python google-authentication docker

2
推荐指数
1
解决办法
4572
查看次数

如何将 Rust 书中的“Vec 中的最大值”示例转换为不使用 Copy 特征?

我正在尝试完成2018 年 Rust 书中“留给读者”的练习。他们的示例 10-15 使用了Copytrait。但是,他们建议在没有的情况下实现相同的功能,Copy而我一直在为此苦苦挣扎。

没有Copy,我无法使用largest = list[0]. 编译器建议改用引用。我这样做,largest变成了一个&T. 然后编译器抱怨largest比较中使用的是 a &T, not T,所以我将其更改*largest为取消引用指针。这一切顺利,但随后偶然发现了largest = item,抱怨T而不是&T。我切换到largest = &item. 然后我收到一个我无法处理的错误:

error[E0597]: `item` does not live long enough
 --> src/main.rs:6:24
  |
6 |             largest = &item;
  |                        ^^^^ borrowed value does not live long enough
7 |         }
8 |     }
  |     - …
Run Code Online (Sandbox Code Playgroud)

vector rust

1
推荐指数
1
解决办法
237
查看次数