Faire en sorte que PyCharm reconnaisse python sur le sous-système Windows linux (bash sur windows)

lors de L'exécution des versions Linux de python, pip etc. "nativement" sur windows est incroyable, je voudrais le faire en utilisant un IDE approprié. Puisque la compatibilité SSHD n'a pas encore été implémentée, J'essaie de faire en sorte que PyCharm reconnaisse Linux python comme un interpréteur local.

après avoir installé le sous-système Windows Linux, tapez

bash -c python

à partir de la ligne de commande windows, vous tomberez dans un shell python.

bash -c "echo "print 'hello world'" | python" 

fonctionne aussi bien, produisant "hello world" comme sortie dans le shell de windows!

je suis en train de terminer un .le fichier bat et de le présenter à PyCharm comme un interprète, c'est à dire

python.chauve-souris:

C:WindowsSystem32bash.exe -c "echo %1 | python" 

mais je continue de recevoir "le sdk semble invalide" pour toute variation que j'essaie. Comme je ne sais pas exactement ce que PyCharm fait pour "valider" le SDK, c'est difficile à surmonter.

32
demandé sur Cœur 2016-05-03 12:15:28

4 réponses

utiliser PyCharm avec WSL Python sur Win10 Départ de SSH

PyCharm ne peut être configuré que pour utiliser WSL Python comme interpréteur distant (ceci est dû au manque d'autres API publiques).

  • Installer Win10 construire 14361 ou plus tard. Vous pouvez également mettre à jour votre Aperçu Insider actuel.
  • Installer wsl (quelque chose comme lxrun /install` && lxrun /mise à jour )
  • Exécuter bash.exe
  • mise à jour de la dernière version sudo apt-get update & & sudo apt-get upgrade
  • Open/etc/sshd_config
    • activer l'authentification par mot de passe (à moins que vous ne vouliez utiliser des clés publiques). Ouvrez le fichier /etc/ssh/sshd_config , et de définir PasswordAuthentication yes.
    • puisque chroot n'est pas implémenté dans WSL (encore), vous devez également définir UsePrivilegeSeparation no
    • Enregistrer et fermer
  • tapez sudo $(sudo which sshd) -d pour lancer OpenSSH au premier plan (c'est beaucoup plus facile pour déboguer). Vous devriez voir quelque chose comme "Serveur écoute sur 0.0.0.0 port 22"
  • à Partir d'un autre bash.session exe try ssh 127.0.0.1
  • si vous voyez un message au sujet de L'empreinte digitale ECDSA, répondez y. Vous devriez voir l'invite de mot de passe. Si vous le voyez, votre serveur fonctionne correctement.

  • L'éteindre avec CTRL+C, et démarrer le serveur en mode démon (sudo service SSH start ). On dirait que upstart est cassé sur WSL courant, donc vous devez exécuter bash.exe , lancer sshd et de garder la fenêtre de la console est ouverte depuis que WSL s'arrête lorsque le dernier client se déconnecte. Vous pouvez créer wsl_ssh.fichier bat comme bash.exe-c "sudo service SSH start & & sleep 999d" et l'utiliser pour lancer ssh.

Configuration De PyCharm PyCharm doit être configuré pour utiliser WSL comme interpréteur à distance, mais sans déploiement, puisque chaque lecteur sur Windows est mappé au dossier approprié dans /mnt/ dans WSL. Vous n'avez donc qu'à configurer la cartographie. Pour l'interprète à distance, voir https://www.jetbrains.com/help/pycharm/2016.1/configuring-remote-python-interpreters.html . Vous devez utiliser 127.0.0.1 comme nom d'hôte, et login et mot de passe que vous avez entrés après le premier lxrun /install . Vous devez également définir C:` /mnt/c/ ` à votre mappages. Voir la vidéo du post précédent.

Auteur: Ilya Kazakevich

14 Juin 2016, 17:20

https://youtrack.jetbrains.com/issue/PY-19129#comment=27-1469350

27
répondu bmjjr 2017-01-18 18:40:49

Eh bien, j'ai réussi à produire un hack de travail moche. Vous devrez installer python-setuptools et pip manuellement sous le sous-système Linux. Assurez-vous d'utiliser la version pip fournie par PyCharm, vous la trouverez à un chemin similaire à:

C:\Program fichiers (x86)\JetBrains\PyCharm 2016.1.2\helpers\pip-7.1.0.tar.gz

puis configurer le script suivant comme "python.bat " under "c:\Python" et point PyCharm à elle comme un interprète:

@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

pardonnez le style de codage terrible, comme je n'ai jamais vraiment développé des fichiers Windows batch avant.

vous devrez peut-être modifier la structure du répertoire pour qu'elle corresponde à votre système. Notez également que la sortie de tout script python appelé par Python.bat est redirigé vers un fichier temp sous le sous-système linux, puis reprogrammé sous windows. Pour une raison quelconque, la tuyauterie la sortie de bash.exe via windows provoque des erreurs.

Espérons que cette aider.

mise à jour: enveloppé l'appel à "bash" avec "START" afin d'éviter de terribles erreurs de conduite (C. F. https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13425768-allow-windows-programs-to-spawn-bash)

4
répondu Boaz Arad 2016-05-03 14:49:59

pris en charge par l'intermédiaire de l'int distant. Voir le dernier commentaire: https://youtrack.jetbrains.com/issue/PY-19129

4
répondu user996142 2016-06-14 20:26:18

j'aimerais ajouter la réponse de bmjjr en disant que c'est uniquement disponible avec L'édition PyCharm Professional. La fonctionnalité D'interprétation à distance n'est pas disponible avec L'édition communautaire, comme je l'ai malheureusement découvert:

prise en charge seulement dans le professionnel Edition

  • Cython
  • Django
  • AppEngine
  • Fiole
  • Jinja2
  • Mako
  • web2py
  • Pyramide
  • Profiler
  • SQLAlchemy
  • Diagrammes
  • interprètes à distance, débogage à distance, Vagabond, Docker
  • détection de code Double
  • la couverture de Code
  • .les fichiers po support
  • BDD support
  • intégration des profileurs
  • Visualisation De La Simultanéité Des Threads

https://www.jetbrains.com/pycharm/features/editions_comparison_matrix.html

1
répondu jonathan 2017-08-03 10:58:32