2016-05-03 13 views
27

Podczas pracy z wersjami Pythona, PIP itp. "Natywnie" w systemie Windows jest niesamowity, chciałbym to zrobić za pomocą odpowiedniego IDE. Ponieważ zgodność z SSHD nie została jeszcze zaimplementowana, staram się, aby PyCharm rozpoznał python Linuksa jako lokalny interpreter.Uzyskiwanie PyCharm do rozpoznawania Pythona na podsystemie linuksowym Windows (bash na Windows)

Po zainstalowaniu podsystem Windows Linux, wpisując

bash -c python 

z wiersza polecenia systemu Windows spadnie ci do powłoki Pythona.

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

działa również, produkując "Witaj świecie" jako wyjście w powłoce okna!

Próbuję owinąć się to jako plik .bat i przedstawić go do pycharm jako lokalny tłumacza, czyli

python.bat:

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

ale wciąż otrzymuję „SDK wydaje się nieważny "dla każdej wersji, którą próbuję. Ponieważ nie jestem pewien, co dokładnie robi PyCharm, aby "zweryfikować" SDK, jest to trudne do przezwyciężenia.

+0

Czy utworzyć ścieżki dla Pythona? – 123

+2

Należy zauważyć, że nie jest to typowy python podczas instalacji systemu Windows. Próbuję uzyskać dostęp do Pythona w podsystemie Windows Linux (zobacz https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux). Nie można tego rozwiązać za pomocą ścieżek. –

+2

Istnieje otwarte żądanie funkcji, możesz go śledzić (i głosować): https://youtrack.jetbrains.com/issue/PY-19129 –

Odpowiedz

4

Cóż, udało mi się stworzyć brzydkiego, działającego hacka. Będziesz musiał zainstalować python-setuptools i pip ręcznie w podsystemie Linux. Upewnij się, że używasz wersji pip dostarczonej przez PyCharm, znajdziesz ją na ścieżce podobnej do:
C: \ Program Files (x86) \ JetBrains \ PyCharm 2016.1.2 \ helpers \ pip-7.1.0.tar. gz

Potem setup poniższy skrypt jako "python.bat" pod "c: \ Python" i punkt pycharm do niego jako tłumacza:

@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 

wybaczyć straszny styl kodowania, jak mam nigdy wcześniej nie tworzyłem plików wsadowych Windows.

Może zajść potrzeba zmodyfikowania struktury katalogów, aby pasowała do systemu. Zauważ też, że dane wyjściowe dowolnego skryptu Pythona wywoływanego przez Python.bat są przesyłane do pliku tymczasowego w podsystemie linux, a następnie wpisywane z powrotem w systemie Windows. Z jakiegoś powodu, wyprowadzanie wyniku bash.exe przez okna powoduje błędy.

Mam nadzieję, że to pomoże.

UPDATE: Owinięty wywołanie „bash” na „start”, w celu uniknięcia błędów obsługi straszliwe rurowy (por https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13425768-allow-windows-programs-to-spawn-bash)

+0

Jeśli spróbowałeś tego i otrzymano błąd: "System Windows nie może znaleźć" C: \ Windows \ System32 \ bash.exe. "Upewnij się, że wpisałeś poprawnie nazwę, a następnie spróbuj ponownie.", Upewnij się, że korzystasz z PyCharm jako Administrator . Przejdź do katalogu instalacyjnego (coś w stylu 'C: \ Program Files (x86) \ JetBrains \ PyCharm 2016.1.2 \ bin' lub' C: \ Users \ \ AppData \ Local \ JetBrains \ Toolbox \ apps \ PyCharm-P \ ch-0 \ 145.1504.1 \ bin' jeśli korzystasz z aplikacji JetBrains przybornik), kliknij prawym przyciskiem myszy 'pycharm.exe' lub' pycharm64.exe', wybierz ** Właściwości **, ** Zgodność **, następnie sprawdź "Uruchom ten program jako administrator". – breandan

+0

Otrzymuję komunikat o błędzie "nieprawidłowy interpretator python" z pycharm podczas próby dodania nietoperza – user1946989

16

Korzystanie pycharm z WSL Pythona na Win10 Zaczynając ssh

pycharm może być skonfigurowany do używania WSL Python jako zdalne Tłumaczka (wynika to z braku innych publicznych API).

  • Zainstaluj Win10 build 14361 lub nowszy. Możesz również uaktualnić swój aktualny Podgląd Insider.
  • Install WSL (coś jak lxrun/install` & & lxrun/update)
  • Run bash.exe
  • Aktualizacja do najnowszej wersji sudo apt-get update sudo apt & &-get upgrade
  • Otwórz/etc/ssh/sshd_config
    • Włącz uwierzytelnianie za pomocą hasła (chyba że chcesz używać kluczy publicznych). Otwórz/etc/ssh/sshd_config i ustaw PasswordAuthentication yes.
    • Od chroot nie jest realizowany w WSL (jeszcze), trzeba także ustawić UsePrivilegeSeparation nie
    • Zapisz i zamknij go
  • Rodzaj sudo $ (sudo który sshd) -D uruchomić OpenSSH na pierwszym planie (jest znacznie łatwiejsze do debugowania). Powinieneś zobaczyć coś takiego „Server nasłuchuje na porcie 22 0.0.0.0”
  • Z innej sesji bash.exe spróbować ssh 127.0.0.1
  • Jeśli zobaczysz komunikat o ECDSA palec drukowania, odpowiedz y. Powinieneś zobaczyć prompt hasła. Jeśli widzisz, serwer działa poprawnie.

  • Wyłączyć za pomocą CTRL + C i uruchomić serwer w trybie demona (sudo service ssh start). Wygląda na to, że upstart jest uszkodzony na bieżącym WSL, więc musisz uruchomić bash.exe, uruchomić sshd i pozostawić otwarte okno konsoli, ponieważ WSL zatrzyma się, gdy ostatni klient się rozłączy. Możesz utworzyć plik wsl_ssh.bat, taki jak bash.exe -c "sudo service ssh start & & & spać 999d" i użyć go do uruchomienia ssh.

Konfigurowanie pycharm pycharm powinien być skonfigurowany do korzystania z WSL jako zdalnego tłumacza ale zz wdrożenia, ponieważ każdy dysk w systemie Windows jest mapowany do odpowiedniego folderu w/mnt/w WSL. Musisz więc tylko skonfigurować mapowanie. Zdalny interpreter, patrz https://www.jetbrains.com/help/pycharm/2016.1/configuring-remote-python-interpreters.html. Powinieneś używać 127.0.0.1 jako nazwy hosta i loginu i hasła wprowadzonego po pierwszym lxrun/install. Powinieneś także ustawić C: `na/mnt/c /` w swoich mapowaniach. Zobacz wideo z poprzedniego postu.

Autor: Ilya Kazakevich
14 czerwca 2016, 17:20

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

+0

To powinna być zaakceptowana odpowiedź – ThatAintWorking

0

Chciałbym dodać odpowiedź bmjjr stwierdzając, że jest to dostępny tylko z pycharm Professional Edition .Funkcja tłumacza zdalny nie jest dostępna z Community Edition, a ja niestety dowiedziałem:

Obsługiwane tylko w wersji Professional Edition

  • Cython
  • Django
  • AppEngine
  • Flask
  • Jinja2
  • Mako
  • Web2py
  • Pyramid
  • Profiler
  • sqlalchemy
  • Schematy
  • Remote tłumacze, zdalne debugowanie, Vagrant, dokowane
  • Duplikat kodu Wykrywanie
  • pokrycie kodu
  • plików .po obsługa
  • BDD wsparcie
  • integracja Profiler
  • Temat współbieżności Wizualizacja

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