Python睡眠在VS Code中的Conda环境中不起作用

时间:2020-01-09 13:41:50

标签: python visual-studio-code conda

我有以下代码段

import time
print("Printed immediately.")
time.sleep(2.4)
print("Printed after 2.4 seconds.")

在VS Code:Conda Environment中,它不先打印语句01,并且在2.4s延迟后不打印语句02。而是在2.4s延迟后同时打印两个文件。此问题在本机python版本(带Mac OS的Python 3.x)中不可见。如何解决此问题?

p.s我发现此错误与正在执行的命令有关。执行的默认命令是

conda run -n env_name python "path/test_print.py"

如果更改如下,则打印时会有时间延迟

python "path/test_print.py"

如何在VS Code中更改默认执行命令?

2 个答案:

答案 0 :(得分:1)

我认为这里的根本问题是“ conda run”会缓冲stdout直到命令完成-参见:https://github.com/conda/conda/issues/9412-但与此同时,我想唯一的解决方法是更改​​执行命令。我认为默认启动命令已在最新(2020.1.57204)VS Code python扩展发行版中更改,因为在此之前我没有任何此类问题。

我发现将condaPath的VSCode Python扩展设置从默认(空白)更改为无效-例如condaX-可以将启动命令从“ conda run -n ..”更改。 。”,转到“&C:/ProgramData/Anaconda3/envs/tf-gpu/python.exe full_path_to_py_file.py”-可以在适当的conda环境(在我的情况下为tf-gpu)中运行而无需IO缓冲问题。 (显然,我在Windows上运行。)

我以前使用https://medium.com/@udiyosovzon/how-to-activate-conda-environment-in-vs-code-ce599497f20d设置了conda启动功能,但不确定是否有任何更改与该问题有关,但此后我重新安装了VSCode python扩展,无法找到这些更改的踪迹。 ,因此我怀疑其中的任何一个对Ida所描述的condaPath更改是否起作用都是必要的。

答案 1 :(得分:0)

我假设您在本机python中不使用任何虚拟环境,可以通过以下方式实现:

  1. 在VS Code中打开一个终端(或使用OS的终端)
  2. 假设您的默认python已链接到python2,请键入which python3。您会得到类似/usr/bin/python3
  3. 的信息
  4. 在您所在的项目文件夹中打开VS Code的用户设置。如果没有,请创建一个.vscode/settings.json
  5. 输入并保存
{
    "python.pythonPath": "/usr/bin/python3"
}

或者如果要全局更改,请在设置文件->首选项->设置中进行搜索,并搜索python路径,并将其设置为/usr/bin/python3