Получение PyCharm для распознавания Python в подсистеме Linux Linux (Bash на Windows)
Хотя запускать версии Linux на Python, pip и т. Д. "Изначально" в Windows - это удивительно, я бы хотел сделать это, используя подходящую IDE. Поскольку совместимость с SSHD еще не реализована, я пытаюсь заставить PyCharm распознавать Linux Python в качестве локального интерпретатора.
После установки подсистемы Windows Linux введите
bash -c python
из командной строки Windows вы попадете в оболочку Python.
bash -c "echo \"print 'hello world'\" | python"
также работает, создавая "hello world" как вывод в оболочке windows!
Я пытаюсь обернуть это как файл.bat и представить его PyCharm в качестве локального интерпретатора, т.е.
python.bat:
C:\Windows\System32\bash.exe -c "echo %1 | python"
Но я продолжаю получать "SDK кажется недействительным" для любого варианта, который я пытаюсь. Поскольку я не совсем уверен, что именно PyCharm делает для "проверки" SDK, это трудно преодолеть.
5 ответов
Использование PyCharm с WSL Python на Win10 Запуск SSH
PyCharm можно настроить только на использование WSL Python в качестве удаленного интерпретатора (это связано с отсутствием других общедоступных 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 на переднем плане (это намного проще для отладки). Вы должны увидеть что-то вроде "Сервер слушает на 0.0.0.0 порт 22"
- Из другой сессии bash.exe попробуйте ssh 127.0.0.1
Если вы видите сообщение об отпечатке пальца ECDSA, ответьте y. Вы должны увидеть подсказку пароля. Если вы видите это, то ваш сервер работает правильно.
Отключите его, нажав CTRL+C, и запустите сервер в режиме демона (запуск ssh службы sudo). Похоже, что upstart не работает на текущем WSL, поэтому вам нужно будет запустить bash.exe, запустить sshd и держать окно консоли открытым, так как WSL останавливается при отключении последнего клиента. Вы можете создать файл wsl_ssh.bat, например bash.exe -c "sudo service ssh start &&& sleep 999d", и использовать его для запуска ssh.
Настройка PyCharm PyCharm должен быть настроен на использование WSL в качестве удаленного интерпретатора, но без развертывания, поскольку каждый диск в Windows сопоставлен с соответствующей папкой в / mnt / в WSL. Итак, вам нужно только настроить отображение. Для удаленного переводчика см. https://www.jetbrains.com/help/pycharm/2016.1/configuring-remote-python-interpreters.html. Вы должны использовать 127.0.0.1 в качестве имени хоста, а также логин и пароль, которые вы ввели после первой lxrun /install . Вы также должны установить C:`в /mnt/c/ ` в ваших отображениях. Смотрите видео из предыдущего поста.
Автор: Илья Казакевич
14 июня 2016 г., 17:20
Я пытался работать с большинством решений, но главная проблема заключается в том, что я не могу понизить OpenSSH в Windows до уровня ниже 7,5, как это рекомендовано JetBrains.
К счастью, они решили эту проблему для нас! Я скачал версию Pycharm 2018.3 с ранним доступом
https://blog.jetbrains.com/pycharm/2018/10/pycharm-2018-3-eap-7/
Я хотел бы добавить ответ bmjjr, заявив, что он доступен только в PyCharm Professional Edition. Функция Remote Interpreter недоступна в Community Edition, как я, к сожалению, узнал:
Поддерживается только в Professional Edition
- Cython
- Джанго
- AppEngine
- колба
- Jinja2
- Мако
- web2py
- пирамида
- Profiler
- SQLAlchemy
- Диаграммы
- Удаленные переводчики, удаленная отладка, Vagrant, Docker
- Обнаружение дубликата кода
- Покрытие кода
- Поддержка.po файлов
- Поддержка BDD
- Интеграция с профилировщиком
- Визуализация параллелизма потоков
https://www.jetbrains.com/pycharm/features/editions_comparison_matrix.html
Ну, мне удалось создать уродливый рабочий хак. Вам придется установить python-setuptools и pip вручную в подсистеме Linux. Обязательно используйте версию pip, предоставленную PyCharm, вы найдете ее по пути, похожему на:
C: \ Program Files (x86) \ JetBrains \ PyCharm 2016.1.2 \ helpers \ pip-7.1.0.tar.gz
Затем установите следующий скрипт как "python.bat" в "c:\Python" и укажите PyCharm на него как на интерпретатора:
@echo off
@setlocal enableextensions enabledelayedexpansion
:: Requiers pip and setuptools to already be installed on linux subsystem
Set "Pattern= "
Set "Replace=\ "
Set "cdrive=C:"
Set "linpath=/mnt/c"
:: Iterate over arguments, convert paths to linux format and concatinate
set argCount=0
for %%x in (%*) do (
set /A argCount+=1
set arg=%%x
:: Backward slash to forward slash
SET arg=!arg:\=/!
:: C drive to /mnt/c/ - default linux subsystem mount point
SET arg=!arg:%cdrive%=%linpath%!
:: Space to escaped space
SET arg=!arg:%Pattern%=%Replace%!
:: Parethesis to escaped parenteses
SET arg=!arg:^(=\^(!
SET arg=!arg:^)=\^)%!
:: Deqoute voodoo via http://ss64.com/nt/syntax-dequote.html
SET arg=###!arg!###
SET arg=!arg:"###=!
SET arg=!arg:###"=!
SET arg=!arg:###=!
if "!args!"=="" (
set args=!arg!
) else (
set args=!args! !arg!
)
)
:: Dump it to the interpreter
:: Output is piped inside the Linux subsys, as windows piping for bash seems broken
START "Terrible hack to avoid pipe error" /W /MIN C:\Windows\System32\bash.exe -c "python !args! > /mnt/c/Python/test"
:: Output resulr from piped file
type c:\Python\test
:: echo !args!
EXIT /B > NUL
Простите за ужасный стиль кодирования, так как я никогда раньше не разрабатывал пакетные файлы Windows.
Возможно, вам придется настроить структуру каталогов в соответствии с вашей системой. Также обратите внимание, что выходные данные любого сценария Python, вызываемого Python.bat, передаются во временный файл в подсистеме linux, а затем выводятся обратно в Windows. По какой-то причине передача bash.exe через windows приводит к ошибкам.
Надеюсь это поможет.
ОБНОВЛЕНИЕ: обернул вызов "bash" с помощью "START", чтобы избежать ужасных ошибок обработки канала (см. https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13425768-allow-windows-programs-to-spawn-bash)
Поддерживается через удаленный инт. Смотрите последний комментарий: https://youtrack.jetbrains.com/issue/PY-19129
Настройте удаленного переводчика через WSL #
Откройте диалоговое окно Add Python Interpreter одним из следующих способов:
Когда вы находитесь в редакторе, наиболее удобный способ - использовать виджет Python Interpreter в строке состояния. Нажмите на виджет и выберите Добавить переводчика...
Если вы находитесь в диалоговом окне "Настройки / Настройки" (Ctrl+Alt+S), выберите "Проект | Переводчик проекта. Щелкните значок "Настроить интерпретатор проекта" и выберите "Добавить".
В левой части диалогового окна нажмите WSL.
Используйте Анаконду:
.\rootfs\home\$UserName$\anaconda\envs\$Conda_Env$\bin\python3
Используйте Pyhton: добавление интерпретатора WSL
Выберите дистрибутив Linux и укажите путь к исполняемому файлу python в выбранном дистрибутиве Linux.
После этого новый интерпретатор будет добавлен в ваш проект, и будут установлены сопоставления по умолчанию для mnt.
Недавно добавленный интерпретатор WSL
Обратите внимание, что с WSL вы не можете создавать виртуальные среды: все установленные вами пакеты будут добавлены в соответствующий системный интерпретатор. Вам будет предложено ввести пароль sudo.
Ссылка: JetBrains
Я использовал обычный удаленный ssh intepreter "старый метод", обсуждаемый в этой ссылке здесь:
Я использовал это руководство: критически я получил ошибку аутентификации, которая была решена с помощью этого: