我有以下代码段
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中更改默认执行命令?
答案 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中不使用任何虚拟环境,可以通过以下方式实现:
which python3
。您会得到类似/usr/bin/python3
.vscode/settings.json
。{
"python.pythonPath": "/usr/bin/python3"
}
或者如果要全局更改,请在设置文件->首选项->设置中进行搜索,并搜索python路径,并将其设置为/usr/bin/python3