Получение PyCharm для распознавания python в подсистеме Linux linux (bash на окнах)
При запуске Linux-версий python, pip и т.д. "изначально" на окнах потрясающе, я бы хотел сделать это, используя правильную среду IDE. Поскольку SSHD-совместимость еще не реализована, я пытаюсь заставить PyCharm распознавать Linux-питон как локальный интерпретатор.
После установки подсистемы 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, это трудно преодолеть.
Ответы
Ответ 1
Использование PyCharm с WSL Python на Win10
Запуск SSH
PyCharm может быть настроен только на использование WSL Python в качестве удаленного интерпретатора (это связано с отсутствием другого открытого API).
- Установите Win10 build 14361 или новее. Вы также можете обновить текущий предварительный просмотр.
- Установить 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, который sshd) -d для запуска OpenSSH на переднем плане (это намного проще для отладки). Вы должны увидеть что-то вроде "Сервер, прослушивающий на 0.0.0.0 порт 22"
- Из другого сеанса bash.exe попробуйте 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/в WSL. Таким образом, вам нужно только настроить отображение. Для удаленного интерпретатора см. https://www.jetbrains.com/help/pycharm/2016.1/configuring-remote-python-interpreters.html. Вы должны использовать 127.0.0.1 в качестве имени хоста, а логин и пароль вы ввели после первого lxrun/install. Вы также должны установить C: `to/mnt/c/` в своих сопоставлениях. Смотрите видео из предыдущего сообщения.
Автор: Илья Казакевич
14 июня 2016 года, 17:20
https://youtrack.jetbrains.com/issue/PY-19129#comment=27-1469350
Ответ 2
Я пытался работать с большинством решений, но главная проблема заключается в том, что я не могу понизить OpenSSH в Windows до уровня ниже 7.5, как это рекомендовано JetBrains.
К счастью, они решили эту проблему для нас! Я скачал версию Pycharm 2018.3 с ранним доступом
https://blog.jetbrains.com/pycharm/2018/10/pycharm-2018-3-eap-7/
![enter image description here]()
Ответ 3
Ну, мне удалось создать уродливый рабочий хак.
Вам нужно будет установить python-setuptools и pip вручную под подсистемой Linux. Обязательно используйте версию pip, предоставленную PyCharm, вы найдете ее на пути, подобном:
C:\Program Files (x86)\JetBrains\PyCharm 2016.1.2\helpers\pip-7.1.0.tar.gz
Затем установите следующий script как "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 script, вызываемый Python.bat, передается в файл temp под подсистемой linux, а затем выводится обратно под окнами. По какой-то причине вывод из строя вывода bash.exe через окна вызывает ошибки.
Надеюсь, что это поможет.
UPDATE: завершение вызова "bash" с помощью "START", чтобы избежать ошибок при обработке ошибок (cf https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13425768-allow-windows-programs-to-spawn-bash)
Ответ 4
Поддерживается через удаленный int. Смотреть последний комментарий: https://youtrack.jetbrains.com/issue/PY-19129
Ответ 5
Я хотел бы добавить ответ bmjjr, указав, что это доступно только с помощью PyCharm Professional Edition. Функция Remote Interpreter недоступна в Community Edition, поскольку я, к сожалению, узнал:
Поддерживается только в Professional Edition
- Cython
- Django
- AppEngine
- Колба
- Jinja2
- Мако
- web2py
- Пирамида
- Профили
- SQLAlchemy
- Диаграммы
- Удаленные интерпретаторы, удаленная отладка, Vagrant, Docker
- Двойное обнаружение кода
- Покрытие кода
Поддержка файлов
- .po
- Поддержка BDD
- Интеграция профилировщика
- Тема Concurrency Визуализация
https://www.jetbrains.com/pycharm/features/editions_comparison_matrix.html
Ответ 6
Настройте удаленного переводчика через 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.
Ввод вашего пароля sudo
Ссылка: JetBrains
Ответ 7
Я использовал обычный удаленный ssh intepreter "старый метод", обсуждаемый в этой ссылке здесь:
Я использовал это руководство:
критически я получил ошибку аутентификации, которая была устранена с помощью этой: