python - 让 PyC​​harm 在 windows linux 子系统上识别 python(windows 上的 bash)

标签 python pycharm windows-subsystem-for-linux

虽然在 Windows 上“ native ”运行 Linux 版本的 python、pip 等非常棒,但我想使用适当的 IDE 来实现。由于尚未实现 SSHD 兼容性,我正在尝试让 PyC​​harm 将 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.batbash.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 - 让 PyC​​harm 在 windows linux 子系统上识别 python(windows 上的 bash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37000166/

相关文章:

python - 如何在 Singularity 配方中激活 Anaconda 环境

python - 使用 xlsxwriter 遍历工作表查看索引

python - Pycharm 忽略参数周围的三引号

python - 创建一个打印雪花的二维数组 PYTHON

python - 如何使用pycharm在远程服务器上的远程docker上设置安全连接

git - 对于大型项目来说,在 WSL 上的 Debian 和 Ubuntu 上运行 git 命令非常慢

python - 如何从键值对列表中删除值

python - 我需要在这个 Django 模型中添加一个 db_index 吗?

c - Syslog 目录不存在

docker - 如何在 WSL2 上公开 Docker TCP 套接字? (WSL 安装的 Docker,而不是 Docker Desktop)