虽然在 Windows 上“ native ”运行 Linux 版本的 python、pip 等非常棒,但我想使用适当的 IDE 来实现。由于尚未实现 SSHD 兼容性,我正在尝试让 PyCharm 将 Linux python 识别为本地解释器。
安装 Windows Linux 子系统后,键入
bash -c python
Windows 命令行会将您放入 python shell。
bash -c "echo \"print 'hello world'\" | python"
同样有效,在 windows shell 中生成“hello world”作为输出!
我正在尝试将其包装为 .bat 文件并将其作为本地解释器呈现给 PyCharm,即
python.bat:
C:\Windows\System32\bash.exe -c "echo %1 | python"
但是对于我尝试的任何变体,我都会不断收到“sdk 似乎无效”。由于我不确定 PyCharm 究竟在做什么来“验证”SDK,所以这很难克服。
最佳答案
在 Win10 上使用 PyCharm Professional 和 WSL Python 启动 SSH
PyCharm 只能配置为使用 WSL Python 作为远程解释器(这是由于缺少其他公共(public) API)。
- 安装 Win10 build 14361 或更高版本。您还可以升级当前的 Insider Preview。
- 安装 wsl(类似于
lxrun /install` && lxrun /update
) - 运行
bash.exe
- 更新到最新版本
sudo apt-get update && sudo apt-get upgrade
- 打开
/etc/ssh/sshd_config
- 启用密码验证(除非您想使用公钥)。打开
/etc/ssh/sshd_config
, 并设置PasswordAuthentication yes
. - 自
chroot
起在 WSL 中(还没有实现),您还需要设置UsePrivilegeSeparation no
- 保存并关闭它
- 启用密码验证(除非您想使用公钥)。打开
- 输入
sudo $(sudo which sshd) -d
在前台运行 OpenSSH(调试起来更容易)。您应该会看到类似Server listening on 0.0.0.0 port 22
的内容 - 来自另一个
bash.exe
session 尝试ssh 127.0.0.1
如果您看到有关 ECDSA 指纹的消息,请回答
y
.您应该看到密码提示。如果你看到它,那么你的服务器工作正常。使用 CTRL+C 将其关闭,并以守护程序模式启动服务器 (
sudo service ssh start
)。看起来 Upstart 在当前 WSL 上已损坏,因此您需要运行bash.exe
, 开始sshd
并保持控制台窗口打开,因为 WSL 在最后一个客户端断开连接时停止。您可以创建wsl_ssh.bat
像bash.exe -c "sudo service ssh start &&& sleep 999d"
这样的文件并使用它来启动 ssh。
配置 PyCharm
PyCharm 应配置为使用 WSL 作为远程解释器但无需部署,因为 Windows 上的每个驱动器都映射到 /mnt/<DRIVE_NAME>
中的适当文件夹在 WSL 中。因此,您只需要配置映射。对于远程口译员,请参阅 configuration-remote-python-interpreters .您应该使用 127.0.0.1
作为主机名,以及您在第一个 lxrun /install
之后输入的登录名和密码.您还应该设置 C:\
至/mnt/c/
在您的映射中。请参阅上一篇文章中的视频。
作者:伊利亚·卡扎克维奇
2016 年 6 月 14 日 17:20
https://youtrack.jetbrains.com/issue/PY-19129#comment=27-1469350
关于python - 让 PyCharm 在 windows linux 子系统上识别 python(windows 上的 bash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37000166/