While running Linux versions of python, pip etc. "natively" on windows is amazing, I'd like to do so using a proper IDE. Since SSHD compatibility has not been implemented yet, I'm trying get PyCharm to recognize Linux python as a local interpreter.
After installing the Windows Linux subsystem, typing
bash -c python
from the windows command line will drop you into a python shell.
bash -c "echo \"print 'hello world'\" | python"
works as well, producing "hello world" as output in the windows shell!
I'm trying to wrap this up as a .bat file and present it to PyCharm as a local interpreter, i.e.
python.bat:
C:\Windows\System32\bash.exe -c "echo %1 | python"
But I keep getting "the sdk seems invalid" for any variation I try. Since I'm not sure exactly what PyCharm is doing to "validate" the SDK, this is hard to overcome.
Configure remote interpreter via WSL Do one of the following: Click the Python Interpreter selector and choose Add Interpreter. Press Ctrl+Alt+S to open the project Settings/Preferences and go to Project <project name> | Python Interpreter. Click the Add Interpreter link next to the list of the available interpreters.
Using PyCharm with built-in remote capabilities allows for the same workflow (PyCharm IDE, Linux backend) across platforms including Windows / WSL2, MacOS / Docker, or any desktop and a remote Linux virtual machine in the cloud.
Python interpreters in PyCharmYou can use a system interpreter that is available with your Python installation. You can also create a Virtualenv, Pipenv, Poetry, or Conda virtual environment. A virtual environment consists of a base interpreter and installed packages.
Using PyCharm Professional with WSL Python on Win10 Starting SSH
PyCharm can only be configured to use WSL Python as a Remote Interpreter (this is due to lack of other public API).
lxrun /install` && lxrun /update
)bash.exe
sudo apt-get update && sudo apt-get upgrade
/etc/ssh/sshd_config
/etc/ssh/sshd_config
, and set PasswordAuthentication yes
.chroot
is not implemented in WSL (yet), you also need to set UsePrivilegeSeparation no
sudo $(sudo which sshd) -d
to run OpenSSH on foreground (it is much easier for debug). You should see something like Server listening on 0.0.0.0 port 22
bash.exe
session try ssh 127.0.0.1
If you see message about ECDSA finger print, answer y
. You should see password prompt. If you see it, then your server works correctly.
Turn it off with CTRL+C, and start server in daemon mode (sudo service ssh start
). Looks like upstart is broken on current WSL, so you would need to run bash.exe
, start sshd
and keep console window opened since WSL stops when the last client disconnects. You may create wsl_ssh.bat
file like bash.exe -c "sudo service ssh start &&& sleep 999d"
and use it to launch ssh.
Configuring PyCharm PyCharm should be configured to use WSL as a remote interpreter but without deployment, since each drive on Windows is mapped to an appropriate folder in /mnt/<DRIVE_NAME>
in WSL. So, you only need to configure the mapping. For remote interpreters, see configuration-remote-python-interpreters . You should use 127.0.0.1
as hostname, and login and password you entered after first lxrun /install
. You also should set C:\
to /mnt/c/
in your mappings. See the video from the previous post.
Author: Ilya Kazakevich
14 Jun 2016, 17:20
https://youtrack.jetbrains.com/issue/PY-19129#comment=27-1469350
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With