提问人:docf 提问时间:7/3/2023 最后编辑:wjandreadocf 更新时间:7/4/2023 访问量:55
在 VSCode 中使用 PyPy conda 虚拟环境时出现问题(在 Windows 上)
Problems using PyPy conda virtual environments within VSCode (on Windows)
问:
我正在尝试评估 VSCode 中的不同 Python 环境,特别是 CPython 3.11、CPython 3.9.16 和 PyPy (7.3.11)。目的是在 conda 中创建所需的环境,并将这些环境用于 VSCode 中的目标代码库。我在 Windows 10 上运行 VSCode:
- 扩展版本:2022.8.0
- VS 代码版本:代码 1.79.2 (695af097c7bd098fbf017ce3ac85e09bbc5dda06, 2023-06-14T08:57:04.379Z)
首先,可以创建一段简单的测试代码,该代码有望突出 PyPy 与 CPython 的优势:
from time import perf_counter
from platform import python_version
print(python_version())
total = 0
st = perf_counter()
for i in range(int(1E3)):
for j in range(int(1E3)):
total += (i + j)
fin = perf_counter()
为 CPython 创建 conda 环境:
conda create --name <my-env-name> python=<my-py-version>
随后在 VSCode 中为这些环境选择解释器,使人们能够“运行 Python...”和/或“调试 Python..”,然后在测试代码中点击设置断点,并在终端中检索每个 CPython 环境的输出。
(base) D:\>C:/tools/miniconda3/python.exe d:/demo.py
3\.9.16
Task took: 0.23066479999999998secs
(base) D:\>C:/tools/miniconda3/envs/py-311/python.exe d:/demo.py
3\.11.3
Task took: 0.19787699996959418secs
然后,可以按照 PyPy 的建议创建一个 PyPy 环境:
conda create -c conda-forge -n my-pypy-env pypy python=3.8
这将成功创建 PyPy 环境。
在 VSCode 中选择 PyPy 解释器环境会立即产生错误:
The isort server crashed 5 times in the last 3 minutes. The server will not be restarted
iSort 输出产生:
\[Info - 4:50:39 PM\] Connection to server got closed. Server will restart.
\[Info - 4:50:39 PM\] Connection to server got closed. Server will restart.
\[Info - 4:50:39 PM\] Connection to server got closed. Server will restart.
\[Info - 4:50:39 PM\] Connection to server got closed. Server will restart.
\[Error - 4:50:40 PM\] Connection to server got closed. Server will not be restarted.
随后尝试“调试 Python...”选择 PyPy 环境完全失败...从字面上看,什么也没发生,似乎也无能为力来改变这一点
如果有人尝试“运行 Python...”当选择 PyPy 环境 (pypy-env) 作为解释器,但 CPython 环境在终端中处于活动状态时,没有任何反应:
(py-311) D:\>C:/tools/miniconda3/envs/pypy-env/python.exe d:/demo.py
(py-311) D:\>
如果随后在终端中强制激活 pypy-env,并调用“Run Python...”,则 PyPy 环境中的代码将执行:
(base) D:\>conda activate pypy-env
(pypy-env) D:\>C:/tools/miniconda3/envs/pypy-env/python.exe d:/demo.py
3\.8.16
Task took: 0.0072821secs
(pypy-env) D:\>
但是,当在终端中激活 PyPy 环境时,可以愉快地运行 CPython 解释器:
(pypy-env) D:\>C:/tools/miniconda3/envs/py-311/python.exe d:/demo.py
3\.11.3
Task took: 0.19779740006197244secs
(pypy-env) D:\>
当从命令行调用测试代码时,CPython 或 PyPy 虚拟环境处于活动状态,因此它似乎不是虚拟环境的问题。
很明显,当使用 CPython 环境时,VSCode 和 iSort 服务器正在正常运行。选择 PyPy 环境显然会损害 iSort 服务器,而 iSort 服务器又会损害 VSCode “运行 Python 文件...”和“调试 Python 文件...”行为。
基于强烈的假设,这是 VSCode 的 iSort 服务器中的真正错误,我向 iSort 团队提出了一个问题。但是,我注意到我所看到的可能是由于“其他原因”。因此,我很想知道:
- 有没有人在 VSCode 下运行 PyPy?(所有“运行...”&“调试..”功能正常工作)
- 如果是这样,你是如何做到这一点的?(使用虚拟环境)
答: 暂无答案
评论