TL;DR: 无法使用 WSL 中的现有 Poetry 环境在 PyCharm (Windows) 上配置 Python 解释器。当尝试在
Add Python Interpreter > Poetry Environment > Existing Environment
下设置 Poetry 环境路径时,所需的 Python 可执行文件根本不显示。我做错了什么?
====================================================== ===
详情:
我在 Windows 11 上使用 PyCharm Pro 2021.3,Python 在 WSL2 (Ubuntu 20.04) 上运行。我正在尝试为我在 WSL2 上创建的现有 Poetry 环境添加一个 python 解释器,但它似乎不起作用。
PyCharm 目前对 Poetry 的支持是通过采用这个插件实现的。根据我从插件的官方文档中收集到的信息,为了使用现有的 Poetry 环境定义解释器,我转到
Python Interpreter > Add > Poetry Environment
,选择 Existing environment
,然后输入该特定环境的路径:
为了找到该环境的路径,我运行“poetry env info”,它给出了以下模式的路径:
\\wsl$\Ubuntu-20.04\home\$USER$\.cache\pypoetry\virtualenvs\my-pretty-project-<some-hash>-py3.8\
在环境中运行
which python
时,我看到python可执行文件位于:
\\wsl$\Ubuntu-20.04\home\$USER$\.cache\pypoetry\virtualenvs\my-pretty-project-<some-hash>-py3.8\bin\python
但是 - 当我在 PyCharm 中浏览到该位置时,Python 文件 simple 不会显示。
bin
目录显示为空 - 正如 this 问题中所述。然而 - 与所说的问题中描述的类似 - 如果我尝试将 WSL 的默认解释器路径重新定义为该 Poetry 环境的路径,Python 可执行文件就在那里并且正在运行:
(遗憾的是,上述问题中描述的解决方案不适用于我的问题,因为我已经在使用 Poetry 环境的补丁了)。
我该怎么做才能让这项工作成功?
我通过将
Add Python interpreter => WSL => Python interpreter path:
设置为“解决”了它
/home/user/.cache/pypoetry/virtualenvs/project-name-1yjHsXUg-py3.10/bin/python
上面的路径是
获取的poem环境$ poetry shell
$ which python
让我说清楚:您希望 PyCharm for Windows 在 WSL 中执行 Python 二进制文件?
那不可能发生。
WSL 中的二进制文件是 Windows 无法执行的“ELF”二进制文件(在 WSL 之外)。如果 virtualenv 是由 WSL 中的诗歌创建的,它将包含 ELF Python 二进制文件。这就是为什么 PyCharm for Windows 永远不会接受它的原因。因为最终 PyCharm for Windows 依赖于 Windows 来执行二进制文件,只要您不选择 WSL 选项。
显式选择“WSL”选项向 PyCharm 表明,对于此特定 virtualenv,您希望 PyCharm 使用 WSL 调用二进制文件。
解决方案是在 Windows 中重新创建 virtualenv,或者仅使用“WSL”选项,但您必须通过 WSL shell 手动管理诗歌。