英文:
How to make UNIX-Python-executable work in VS Code via "select interpreter" on a Windows machine?
问题
我被迫在Windows 10上使用WSL(Windows Subsystem for Linux)来正确安装Python库Cartopy。在Linux发行版上更容易,所以我选择了Ubuntu 20.04 WSL2。
因此,我通过WSL在我的项目文件夹中创建了一个虚拟Python环境,命令是python -m venv linux-venv
。
问题是现在所有的二进制/可执行文件都是为WSL分发编译的,因此无法从在Windows 10中启动的VS Code中选择。
因此,我在WSL上安装了VS Code,并从那里启动它。
我希望我可以从我的项目根目录手动选择正确的解释器路径linux-venv/bin/python
。
不幸的是,即使我是在WSL上运行的VS Code中执行这个操作,也不起作用:
单击我想要的解释器linux-venv/bin/python
,会显示以下错误消息:
如果我尝试“浏览到所需的可执行文件”,它们没有显示,因为只允许“.exe”文件扩展名:
接下来,我只能浏览“.exe”文件,因此无法选择UNIX编译的可执行文件。
结论:
目前似乎无法在Windows 10机器上正确选择UNIX编译的解释器,甚至在使用WSL时也不行。
由于上述Python库Cartopy只能在UNIX系统上正常工作,我需要在WSL中安装我的虚拟环境。
为了继续我的项目,我需要能够选择UNIX编译的解释器,但我无法选择。
英文:
I was forced to use WSL on Windows 10 to install the Python library Cartopy on my Windows machine correctly. It is way easier in a Linux-distribution, so I chose Ubuntu 20.04 WSL2.
As a consequence, I created a virtual Python environment via WSL in my project folder via python -m venv linux-venv
.
The problem is now that all binaries/executables were compiled for the WSL-distribution and are thus not selectable from VS Code started from within Windows 10.
Consequently, I installed VS Code on WSL and started it from there.
My hope was that I can then manually select the right interpreter path linux-venv/bin/python
from my project's root directory.
Unfortunately, it does not work either, even though I'm doing this from VS Code running on WSL:
Clicking on my desired interpreter linux-venv/bin/python
, the following error message is displayed:
If I try to "browse to my desired executable" instead, they are not displayed since solely ".exe" - file extensions are allowed:
Next, I can solely browse ".exe" - files, wherefore I cannot select the UNIX-compiled executables.
Conclusion:
It does not seem possible at the moment to select a UNIX-compiled interpreter in VS Code properly on a Windows 10 - machine, not even using WSL.
Since the aforementioned Python library Cartopy solely works well on UNIX-systems, I need to install my virtual environment from WSL.
In order to continue with my project, I would need to be able to select the UNIX-compiled interpreter, but I cannot.
答案1
得分: 0
问题分析:
我已经弄清楚了实际问题,以便按照@Philippe和@JialeDu友好分享的WSL文档中的方法进行操作:
- VS Code工作区是在Windows 10内创建的。
- Python虚拟环境 (venv)是通过WSL2 (Ubuntu 20.04 LTS)的CLI安装的,但安装在Windows 10上C驱动器上的项目文件夹中。
因此,从WSL内部启动VS Code或单击由WSL扩展提供的"远程按钮"是可以的,但当我打开项目时,它仍位于Windows C驱动器上。这会静默中断与WSL的远程连接,使我像通常一样在Windows的VS Code中工作。
显然,这使得在Windows上工作而不是在Linux (WSL)上工作,因此不可能搜索UNIX可执行文件,甚至选择它们。
解决方案:
- 将整个项目文件夹从C驱动器
C:\Users\username\Projects\project_name
迁移到实际的Ubuntu-WSL系统中的/home/username/projects/project_name
。 - 通过
python3 -m venv linux-venv
在项目文件夹中重新创建虚拟环境。 - 在刚创建的环境中再次安装所有要求。
- 在当前WSL版的VS Code中安装VS Code Python扩展。
- 打开一个Python文件并选择刚刚配置的虚拟环境的解释器。
这一次,它起作用了,因为我实际上是在真正的Linux环境/发行版上工作,所有的包和二进制文件都安装在WSL内。
我不仅需要将整个项目迁移到WSL发行版的目录树中,还需要从那里重新安装虚拟环境的要求和二进制文件。
英文:
Problem Analysis:
I figured out what the actual problems were in order to make it work according to the kindly shared WSL-docs by @Philippe and @JialeDu:
- The VS-Code Workspace had been created from within Windows 10.
- The Python virtual environment (venv) was installed via a WSL2 (Ubuntu 20.04 LTS) - CLI, yet into a project folder on the C-Drive on Windows 10.
Consequently, starting VS-Code from within WSL or clicking on the "remote button" provided by the WSL-extension was fine, but when I opened the project it was still located on the Windows-C-drive. This silently broke the remote connection to WSL and left me working in VS-Code in Windows just like normally.
Obviously, this made it impossible to search for UNIX-executables and even select them, since I was effectively working on Windows, not on Linux (WSL).
Solution:
- Migrate the entire project folder from the C-Drive
C:\Users\username\Projects\project_name
to the actual Ubuntu-WSL-System in/home/username/projects/project_name
. - Create the virtual environment anew in the project folder via
python3 -m venv linux-venv
. - Install all requirements again in that environment just created.
- Install the VS-Code Python Extension in the current WSL-version of VS-Code
- Open a Python-file and select the interpreter of the venv just configured
This time, it worked since I was effectively working on a true Linux environment/distribution with all packages and binaries installed within WSL.
Not only did I have to migrate the entire project on the WSL-distribution's directory tree, but I also had to reinstall the requirements and binaries of the virtual environments from there.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论