47 votes

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

Lors de l'exécution des versions Linux de python, pip etc. de façon "native" sous Windows, j'aimerais le faire en utilisant un IDE approprié. Comme la compatibilité SSHD n'a pas encore été implémentée, j'essaie de faire en sorte que PyCharm reconnaisse python Linux comme un interprète local.

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

bash -c python

à partir de la ligne de commande Windows vous fera entrer dans un shell python.

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

fonctionne également, produisant "hello world" comme sortie dans le shell Windows !

J'essaie d'emballer ceci comme un fichier .bat et de le présenter à PyCharm comme un interpréteur local, c'est-à-dire

python.bat :

C:\Windows\System32\bash.exe -c "echo %1 | python" 

Mais je continue à obtenir "the sdk seems invalid" pour toutes les variantes que j'essaie. Comme je ne sais pas exactement ce que PyCharm fait pour "valider" le SDK, c'est difficile à surmonter.

0 votes

Avez-vous configuré les chemins pour python ?

2 votes

Veuillez noter qu'il ne s'agit pas d'une installation typique de python sous Windows. J'essaie d'accéder à python au sein du sous-système linux de Windows (cf. fr.wikipedia.org/wiki/Windows_Subsystem_for_Linux ). Ce problème ne peut être résolu par des chemins.

2 votes

Il y a une demande de fonctionnalité ouverte pour cela, vous pouvez la suivre (et voter) : youtrack.jetbrains.com/issue/PY-19129

34voto

bmjjr Points 1305

Utilisation de PyCharm Professional avec WSL Python sur Win10 Démarrer SSH

PyCharm ne peut être configuré que pour utiliser WSL Python comme interpréteur à distance (ceci est dû à l'absence d'autre API publique).

  • Installez Win10 build 14361 ou plus. Vous pouvez également mettre à niveau votre Insider Preview actuelle.

  • Installer wsl (quelque chose comme lxrun /install` && lxrun /update )

  • Exécuter bash.exe

  • Mise à jour de la dernière version sudo apt-get update && sudo apt-get upgrade

  • Ouvrir /etc/ssh/sshd_config

    • Activez l'authentification par mot de passe (sauf si vous souhaitez utiliser des clés publiques). Ouvrir /etc/ssh/sshd_config et définir PasswordAuthentication yes .
    • Depuis chroot n'est pas (encore) implémenté dans WSL, vous devez également définir le paramètre UsePrivilegeSeparation no
    • Sauvegarder et fermer
  • Type sudo $(sudo which sshd) -d pour exécuter OpenSSH en avant-plan (c'est plus facile pour le débogage). Vous devriez voir quelque chose comme Server listening on 0.0.0.0 port 22

  • D'un autre bash.exe essai de session ssh 127.0.0.1

  • Si vous voyez un message sur l'empreinte digitale ECDSA, répondez y . Vous devriez voir une invite de mot de passe. Si vous la voyez, alors votre serveur fonctionne correctement.

  • Éteignez-le avec CTRL + C et lancer le serveur en mode démon ( sudo service ssh start ). Il semble que upstart soit cassé sur la WSL actuelle, il faudrait donc exécuter bash.exe , commencer sshd et garder la fenêtre de la console ouverte, car la WSL s'arrête lorsque le dernier client se déconnecte. Vous pouvez créer wsl_ssh.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 distant, mais sans déploiement, puisque chaque lecteur de Windows est mappé à un dossier approprié dans le dossier /mnt/<DRIVE_NAME> dans la WSL. Il suffit donc de configurer le mappage. Pour les interprètes distants, voir configuration-remote-python-interpreters . Vous devez utiliser 127.0.0.1 comme nom d'hôte, et le login et le mot de passe que vous avez entré après la première lxrun /install . Vous devez également définir C:\ à /mnt/c/ dans vos mappings. Voir la vidéo du post précédent.

Auteur : Ilya Kazakevich
14 Jun 2016, 17:20

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

0 votes

Je ne trouve pas "UsePrivilegeSeparation" dans mon fichier sshd_config. Dois-je simplement l'ajouter ou y a-t-il un problème avec mon fichier de configuration ?

1 votes

@Tyberius UsePrivelegeSeperation a été déprécié dans les nouvelles versions d'OpenSSH. C'est probablement ce qui vous arrive.

0 votes

@Seanny123 ouais j'ai fini par demander à JetBrains directement et j'ai eu la même réponse. Du côté positif, je pense que la version la plus récente de Pycharm inclura un support natif pour accéder à WSL.

17voto

bitwhys Points 71

J'ai essayé de travailler avec la plupart des solutions mais le problème principal est que je ne peux pas rétrograder OpenSSH sur Windows à quelque chose en dessous de 7.5 comme cela est recommandé par JetBrains.

Heureusement, ils ont résolu ce problème pour nous ! J'ai téléchargé la version Early Access de Pycharm 2018.3.

https://blog.jetbrains.com/pycharm/2018/10/pycharm-2018-3-eap-7/

enter image description here

Cette fonction n'est toutefois disponible que dans la version professionnelle.

8voto

jonathan Points 187

J'aimerais ajouter la réponse de bmjjr en disant que c'est disponible uniquement avec l'édition professionnelle de PyCharm . La fonction d'interprète à distance n'est pas disponible avec l'édition communautaire, comme je l'ai malheureusement découvert :

Pris en charge uniquement dans l'édition professionnelle

  • Cython
  • Django
  • AppEngine
  • Flacon
  • Jinja2
  • Mako
  • web2py
  • Pyramide
  • Profiler
  • SQLAlchemy
  • Diagrammes
  • Interprètes à distance, débogage à distance, Vagrant, Docker
  • Détection des codes en double
  • Couverture du code
  • Support des fichiers .po
  • Soutien BDD
  • Intégration du profileur
  • Visualisation de la simultanéité des threads

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

5voto

Boaz Arad Points 326

Eh bien, j'ai réussi à produire un affreux hack fonctionnel. Vous devrez installer python-setuptools et pip manuellement sous le sous-système Linux. Soyez sûr d'utiliser la version de pip fournie par PyCharm, vous la trouverez dans un chemin similaire à :
C:\Program Fichiers (x86) \JetBrains\PyCharm 2016.1.2 \helpers\pip -7.1.0.tar.gz

Ensuite, installez le script suivant comme "python.bat" sous "c : \Python "et faire en sorte que PyCharm le considère 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, car je n'ai jamais vraiment développé de fichiers batch Windows auparavant.

Il se peut que vous deviez modifier la structure du répertoire pour l'adapter à votre système. Notez également que la sortie de tout script python appelé par Python.bat est acheminée vers un fichier temporaire sous le sous-système linux, puis recopiée sous Windows. Pour une raison quelconque, le fait de pipeter la sortie de bash.exe sous Windows provoque des erreurs.

J'espère que cela vous aidera.

MISE À JOUR : L'appel à "bash" est entouré de "START" afin d'éviter de terribles erreurs de gestion des tuyaux (cf. https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13425768-allow-Windows-programs-to-spawn-bash )

0 votes

Si vous avez essayé ceci et avez reçu l'erreur : "Windows ne peut pas trouver ' C:\Windows\System32\bash.exe '. Assurez-vous que vous avez tapé le nom correctement et essayez à nouveau", assurez-vous que vous exécutez PyCharm en tant qu'Administrateur. Naviguez vers le répertoire d'installation (quelque chose comme C:\Program Files (x86)\JetBrains\PyCharm 2016.1.2\bin o C:\Users\<USER>\AppData\Local\JetBrains\Toolbox\apps\PyCharm‌​-P\ch-0\145.1504.1\b‌​in si vous utilisez l'application JetBrains toolbox), cliquez avec le bouton droit de la souris sur pycharm.exe o pycharm64.exe , sélectionnez Propriétés , Compatibilité puis cochez "Exécuter ce programme en tant qu'administrateur".

0 votes

Je reçois un message d'erreur "invalid python interpreter" de la part de pycharm lorsque j'essaie d'ajouter la bat.

0 votes

J'ai essayé de nombreux chemins différents, et tout ce que j'obtiens est env: ‘/Python27/python.bat’: No such file or directory

4voto

user996142 Points 349

Prise en charge par la télécommande int. Voir le dernier commentaire : https://youtrack.jetbrains.com/issue/PY-19129

6 votes

Veuillez inclure un extrait du lien. C'est une meilleure expérience de stackoverflow et cela évite le drame des liens brisés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X