2016-05-03 4 views
27

Während Linux-Versionen von Python, Pip usw. "nativ" auf Windows ist erstaunlich, ich möchte dies mit einer geeigneten IDE tun. Da die SSHD-Kompatibilität noch nicht implementiert wurde, versuche ich, PyCharm dazu zu bringen, Linux Python als lokalen Interpreter zu erkennen.PyCharm zu erkennen, Python auf dem Windows-Linux-Subsystem (Bash auf Windows)

Nachdem das Windows-Linux-Subsystem installieren,

bash -c python 

aus der Windows-Kommandozeile eintippen werden Sie in ein Python-Shell fallen.

funktioniert auch, produziert "Hallo Welt" als Ausgabe in der Windows-Shell!

Ich versuche, dies als eine .bat Datei einpacken und es PyCharm als lokaler Dolmetscher zu präsentieren, das heißt

python.bat:

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

Aber ich bekomme immer wieder „die sdk scheint ungültig "für jede Variante, die ich versuche. Da ich nicht sicher bin, was genau PyCharm tut, um das SDK zu "validieren", ist dies schwer zu überwinden.

+0

Haben Sie die Pfade für Python einrichten? – 123

+2

Bitte beachten Sie, dass dies kein typisches Python bei der Windows-Installation ist. Ich versuche auf Python innerhalb des Windows-Linux-Subsystems zuzugreifen (siehe https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux). Dies kann nicht über Pfade gelöst werden. –

+2

Es gibt eine offene Feature-Anfrage für diese, Sie können folgen (und abstimmen): https://youtrack.jetbrains.com/issue/PY-19129 –

Antwort

4

Nun, ich habe es geschafft, einen hässlichen Arbeits Hack zu produzieren. Sie müssen python-setuptools und pip manuell unter dem Linux-Subsystem installieren. Achten Sie darauf, die von PyCharm zur Verfügung gestellte Pip-Version zu verwenden. Sie finden sie unter einem ähnlichen Pfad:
C: \ Programme (x86) \ JetBrains \ PyCharm 2016.1.2 \ helpers \ pip-7.1.0.tar. gz

Dann Setup das folgende Skript als "python.bat" unter "c: \ Python" und Punkt PyCharm ihn als Dolmetscher:

@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 

die schrecklichen Codierstil Vergib, wie ich habe Niemals wirklich Windows-Batch-Dateien entwickelt.

Möglicherweise müssen Sie die Verzeichnisstruktur an Ihr System anpassen. Beachten Sie auch, dass die Ausgabe eines beliebigen Python-Skripts, das von Python.bat aufgerufen wird, an eine temporäre Datei unter dem Linux-Subsystem weitergeleitet und dann unter Windows wieder eingegeben wird. Aus irgendeinem Grund führt die Ausgabe der Datei bash.exe über Windows zu Fehlern.

Hoffe, das hilft.

UPDATE: Wrapped den Anruf zu "bash" mit "START", um schreckliche Rohrhandhabungsfehler (vgl https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13425768-allow-windows-programs-to-spawn-bash)

+0

Wenn Sie dies versuchten und den Fehler erhalten: "Windows kann 'C: \ Windows \ System32 \ bash.exe' nicht finden. Stellen Sie sicher, dass Sie den Namen korrekt eingegeben haben und versuchen Sie es erneut.", Stellen Sie sicher, dass PyCharm als Administrator ausgeführt wird . Navigieren Sie zum Installationsverzeichnis (etwa 'C: \ Programme (x86) \ JetBrains \ PyCharm 2016.1.2 \ bin' oder' C: \ Users \ \ AppData \ Local \ JetBrains \ Toolbox \ apps \ PyCharm-P \ ch-0 \ 145.1504.1 \ bin', wenn Sie die JetBrains Toolbox-App verwenden, klicken Sie mit der rechten Maustaste auf 'pycharm.exe' oder' pycharm64.exe', wählen Sie ** Eigenschaften **, ** Kompatibilität **, und prüfen Sie dann "Führen Sie dieses Programm als Administrator aus". – breandan

+0

Ich erhalte eine Fehlermeldung "ungültiger Python-Interpreter" von pycharm beim Versuch, die Fledermaus hinzuzufügen – user1946989

16

Mit PyCharm mit WSL Python auf Win10 SSH starten

PyCharm kann nur als Remote-Interpreter verwenden WSL Python konfiguriert werden (Mangel an anderen öffentlichen API zurückzuführen ist).

  • Installieren Sie Win10 Build 14361 oder höher. Sie können auch Ihre aktuelle Insider-Vorschau aktualisieren.
  • WSL installieren (so etwas wie lxrun/install` & & lxrun/update)
  • Run bash.exe
  • -Update auf die neueste Version sudo apt-get & & sudo apt-get
  • Öffnen/etc aktualisieren aktualisieren/ssh/sshd_config
    • Aktivieren Sie die Kennwortauthentifizierung (es sei denn, Sie möchten öffentliche Schlüssel verwenden). Öffnen Sie/etc/ssh/sshd_config, und setzen Sie PasswordAuthentication auf yes.
    • Da chroot nicht in WSL (noch) nicht implementiert ist, müssen Sie auch UsePrivilegeSeparation kein
    • speichern setzen und schließen Sie es
  • Typ sudo $ (sudo, die sshd) -d OpenSSH auf dem Vordergrund laufen (es ist viel einfacher für das Debuggen). Sie sollten so etwas wie "Server lauscht auf 0.0.0.0 Port 22"
  • Aus einer anderen bash.exe Sitzung try ssh 127.0.0.1
  • Wenn Sie sehen Nachricht über ECDSA Fingerabdruck, antworten Sie mit y sehen. Sie sollten eine Passwortabfrage sehen. Wenn Sie es sehen, dann funktioniert Ihr Server korrekt.

  • Deaktivieren Sie es mit STRG + C, und starten Sie den Server im Daemon-Modus (sudo service ssh start). Es sieht so aus, als wäre der Upstart in der aktuellen WSL fehlerhaft. Daher müssten Sie bash.exe ausführen, sshd starten und das Konsolenfenster geöffnet lassen, da WSL beim letzten Trennen des Clients stoppt. Sie können wsl_ssh.bat-Datei wie bash.exe -c erstellen "sudo service ssh starten & & & Schlaf 999d" und verwenden Sie es, um ssh zu starten.

Konfigurieren PyCharm PyCharm sollte WSL konfiguriert werden als Remote-Interpreter zu verwenden, aber mit aus Implementierung, da jedes Laufwerk unter Windows entsprechenden Ordner zugeordnet ist, in/mnt/in WSL. Sie müssen also nur das Mapping konfigurieren. Informationen zum Remote-Interpreter finden Sie unter https://www.jetbrains.com/help/pycharm/2016.1/configuring-remote-python-interpreters.html. Sie sollten 127.0.0.1 als Hostnamen und den Benutzernamen und das Passwort verwenden, die Sie nach dem ersten lxrun/install eingegeben haben. Sie sollten auch C: `to/mnt/c /` in Ihren Mappings setzen. Siehe Video vom vorherigen Beitrag.

Autor: Ilya Kazakevich
14. Juni 2016, 17:20

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

+0

Dies sollte die akzeptierte Antwort sein – ThatAintWorking

0

würde Ich mag die Antwort von bmjjr hinzuzufügen, indem die besagen, dass dies nur mit der PyCharm Professional Edition verfügbar .Die Remote-Interpreter-Funktion ist mit der Community Edition nicht verfügbar, da ich leider herausgefunden:

Unterstützte nur in Professional Edition

  • Cython
  • Django
  • AppEngine
  • Flask
  • Jinja2
  • Mako
  • web2py
  • Pyramid
  • Profiler
  • SQLAlchemy
  • Diagramme
  • Fern Dolmetscher, Remote-Debugging, Vagrant, Dockarbeiter
  • Duplizieren Code-Erkennung
  • Codeabdeckung
  • .po-Dateien Unterstützung
  • BDD Unterstützung
  • Profiler Integration
  • Thema Concurrency Visualisierung

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