Python: Różnice pomiędzy wersjami
(→Rozwiązywanie problemów: testowałem na s2, Pillow instalauje się jedynie bez podanych exportów:)) |
|||
(Nie pokazano 26 wersji utworzonych przez 5 użytkowników) | |||
Linia 3: | Linia 3: | ||
=== Dostępne wersje === | === Dostępne wersje === | ||
− | Domyślną | + | Domyślną wersją języka ''Python'' na serwerach MyDevil jest wersja 3.10 - wywołanie polecenia <code>python</code> uruchomi interaktywny interpreter języka właśnie w tej wersji. Oprócz tego dostępne są również polecenia <code>python2.7</code>, <code>python3.7</code>, <code>python3.8</code>, <code>python3.9</code>, <code>python3.10</code> oraz <code>python3.11</code> uruchamiające daną wersję Python. |
=== Virtualenv === | === Virtualenv === | ||
− | ''Virtualenv'' to narzędzie służące do tworzenia izolowanych środowisk języka ''Python''. Używanie ''Virtualenv'' rozwiązuje podstawowy problem związany z różnymi wersjami dodatkowych bibliotek języka oraz uprawnień - wirtualne środowiska | + | ''Virtualenv'' to narzędzie służące do tworzenia izolowanych środowisk języka ''Python''. Używanie ''Virtualenv'' rozwiązuje podstawowy problem związany z różnymi wersjami dodatkowych bibliotek języka oraz uprawnień - wirtualne środowiska są tworzone całkowicie w katalogu domowym użytkownika, co (razem z dostarczonymi przez ''virtualenv'' w standardzie narzędziami) pozwala na pełne, samodzielne zarządzanie zainstalowanymi modułami. |
Przed przystąpieniem do instalacji należy włączyć możliwość korzystania z własnego oprogramowania - [[Binexec]]. | Przed przystąpieniem do instalacji należy włączyć możliwość korzystania z własnego oprogramowania - [[Binexec]]. | ||
− | {{Notice|1=W tym poradniku utworzono i wykorzystano katalog <code class="directory">/usr/home/''login''/.virtualenvs</code> do zgromadzenia wszystkich utworzonych przez użytkownika wirtualnych środowisk. Nowy katalog można | + | {{Notice|1=W tym poradniku utworzono i wykorzystano katalog <code class="directory">/usr/home/''login''/.virtualenvs</code> do zgromadzenia wszystkich utworzonych przez użytkownika wirtualnych środowisk. Nowy katalog można utworzyć za pomocą polecenia <code>mkdir /usr/home/''login''/.virtualenvs</code>.}} |
==== Tworzenie wirtualnego środowiska ==== | ==== Tworzenie wirtualnego środowiska ==== | ||
− | Wirtualne środowisko można utworzyć wykonując w wybranym katalogu polecenie <code>virtualenv</code> podając | + | Wirtualne środowisko można utworzyć wykonując w wybranym katalogu polecenie <code>virtualenv</code> podając nazwę środowiska jako parametr: |
{{ prompt }}cd /usr/home/''login''/.virtualenvs | {{ prompt }}cd /usr/home/''login''/.virtualenvs | ||
+ | {{ prompt }}pip install --upgrade virtualenv | ||
{{ prompt }}virtualenv ''nazwa_środowiska'' | {{ prompt }}virtualenv ''nazwa_środowiska'' | ||
− | {{ output }}New python executable in ''nazwa_środowiska''/bin/ | + | {{ output }}New python executable in ''nazwa_środowiska''/bin/python3.10 |
Also creating executable in ''nazwa_środowiska''/bin/python | Also creating executable in ''nazwa_środowiska''/bin/python | ||
Installing setuptools, pip...done.{{ endoutput }} | Installing setuptools, pip...done.{{ endoutput }} | ||
− | Takie wywołanie polecenia tworzy nowe środowisko wirtualne wykorzystując domyślną | + | Takie wywołanie polecenia tworzy nowe środowisko wirtualne wykorzystując domyślną systemową wersję pythona. Za pomocą flagi <code>-p</code> można wskazać inny plik wykonywalny, co w konsekwencji tworzy środowisko wirtualne używając innej wersji języka ''Python'': |
{{ prompt }}cd /usr/home/''login''/.virtualenvs | {{ prompt }}cd /usr/home/''login''/.virtualenvs | ||
− | {{ prompt }}virtualenv ''nazwa_środowiska'' -p /usr/local/bin/python3. | + | {{ prompt }}pip install --upgrade virtualenv |
− | {{output}}Running virtualenv with interpreter /usr/local/bin/python3. | + | {{ prompt }}virtualenv ''nazwa_środowiska'' -p /usr/local/bin/python3.7 |
+ | {{output}}Running virtualenv with interpreter /usr/local/bin/python3.7 | ||
Using base prefix '/usr/local' | Using base prefix '/usr/local' | ||
− | New python executable in ''nazwa_środowiska''/bin/python3. | + | New python executable in ''nazwa_środowiska''/bin/python3.7 |
Also creating executable in ''nazwa_środowiska''/bin/python | Also creating executable in ''nazwa_środowiska''/bin/python | ||
Installing setuptools, pip...done.{{endoutput}} | Installing setuptools, pip...done.{{endoutput}} | ||
− | |||
==== Aktywacja wirtualnego środowiska ==== | ==== Aktywacja wirtualnego środowiska ==== | ||
− | Do uruchomienia skryptu za pomocą interpretera wystarczy | + | Do uruchomienia skryptu za pomocą interpretera wystarczy podać ścieżkę do nowego pliku wykonywalnego <code>python</code> (<code class="directory">/usr/home/''login''/.virtualenvs/''nazwa_środowiska''/bin/python</code>), jednak w celu ułatwienia korzystania z ''virtualenv'', utworzony został skrypt <code class="directory">bin/activate</code>, którego załadowanie zmodyfikuje środowisko użytkownika w taki sposób, by ułatwić korzystanie z nowego środowiska. |
{{ prompt }}source /usr/home/''login''/.virtualenvs/''nazwa_środowiska''/bin/activate | {{ prompt }}source /usr/home/''login''/.virtualenvs/''nazwa_środowiska''/bin/activate | ||
<span class="output">(''nazwa_środowiska'')</span> {{ prompt }} | <span class="output">(''nazwa_środowiska'')</span> {{ prompt }} | ||
− | Po załadowaniu skryptu aktywacyjnego widać, że zmienił | + | Po załadowaniu skryptu aktywacyjnego widać, że zmienił się znak zachęty. Na początku została podana nazwa wirtualnego środowiska, w którym użytkownik aktualnie się znajduje. W tym stanie nie trzeba podawać pełnej ścieżki do interpretera, polecenia <code>python</code>, <code>pip</code> oraz <code>easy_install</code> będą wykonywane korzystając aktualnie wybranego środowiska wirtualnego. |
− | + | Opuścić dane środowisko można wydając polecenie <code>deactivate</code>. | |
==== Strona WWW ==== | ==== Strona WWW ==== | ||
Przy dodawaniu [[Strona WWW|strony WWW]] typu python należy wskazać plik wykonywalny <code class="directory">/usr/home/''login''/.virtualenvs/''nazwa_środowiska''/bin/python</code>, aby środowisko ''virtualenv'' było używane do obsługi strony. | Przy dodawaniu [[Strona WWW|strony WWW]] typu python należy wskazać plik wykonywalny <code class="directory">/usr/home/''login''/.virtualenvs/''nazwa_środowiska''/bin/python</code>, aby środowisko ''virtualenv'' było używane do obsługi strony. | ||
+ | |||
+ | === Zmienne === | ||
+ | |||
+ | Ustawianie zmiennej z poziomu SSH z widocznością dla aplikacji uruchamianej przez Passengera: | ||
+ | * Dopisanie zmiennych do ~/.bash_profile (np. export TESTENV=1). | ||
+ | * Ważne: zmienne nie działają z ~/.bashrc i ~/.shrc | ||
+ | |||
+ | === Buforowanie wyjścia plików === | ||
+ | Aby wyłączyć należy ustawić w nagłówku odpowiedzi pole X-Accel-Buffering na wartość "no". | ||
+ | |||
+ | === Restart aplikacji === | ||
+ | |||
+ | Restart aplikacji ''Python'' można wykonać za pomocą naszego [[DevilWEB|panelu zarządzania usługą]] w zakładce [[WWW]], lub przy użyciu polecenia [[Devil|systemu zarządzania kontem Devil]]: <code>devil www restart ''domena''</code>. | ||
+ | |||
+ | === Limit procesów dla Phusion Passenger === | ||
+ | Możliwość ustawienia ilości procesów dla stron typu Python. | ||
+ | Składnia polecenia: | ||
+ | |||
+ | devil www options DOMENA processes <ILOŚĆ> | ||
+ | |||
+ | Gdzie: | ||
+ | DOMENA oznacza domenę WWW typu Python. | ||
+ | ILOŚĆ - ilość procesów w przedziale od 1 do 80% procesów systemowych konta hostingowego. | ||
+ | |||
+ | Opcja dostępna jest również w panelu DevilWEB: | ||
+ | |||
+ | Strony WWW (WWW Websites) ➡ Szczegóły (Details) ➡ Limit procesów (Number of processes) ➡ należy wpisać nową wartość oraz zapisać zmiany przyciskiem Zapisz zmiany (Save changes). | ||
=== Rozwiązywanie problemów === | === Rozwiązywanie problemów === | ||
− | Niektóre | + | Niektóre pakiety instalowane przez pip wymagają dodatkowych zmiennych, aby kompilacja przebiegła pomyślnie. Przed uruchomieniem <code>pip install ''pakiet''</code> należy wykonać: |
export CFLAGS="-I/usr/local/include" | export CFLAGS="-I/usr/local/include" | ||
export CXXFLAGS="-I/usr/local/include" | export CXXFLAGS="-I/usr/local/include" | ||
+ | |||
+ | Część pakietów kompiluje się wyłącznie pod GCC więc aby go wskazać należy wykonać polecenia: | ||
+ | export CC=gcc | ||
+ | export CXX=g++ | ||
+ | Można wskazać również inną dostępną wersję GCC. | ||
+ | |||
+ | W przypadku przekraczania limitu procesów systemowych przy instalacji pakietów poprzez pip należy wydać polecenia: | ||
export MAX_CONCURRENCY=1 | export MAX_CONCURRENCY=1 | ||
+ | export CPUCOUNT=1 | ||
+ | export MAKEFLAGS="-j1" | ||
+ | |||
+ | === Logi === | ||
+ | |||
+ | {{Warning|Nie należy usuwać katalogu logs, może to spowodować brak działania stron Node.js, Ruby, Python.}} | ||
+ | |||
+ | Logi błędów zapisują się do pliku error.log w katalogu <code class="directory">/usr/home/''login''/domains/''domena''/logs/</code>. | ||
=== Odnośniki zewnętrzne === | === Odnośniki zewnętrzne === |
Aktualna wersja na dzień 22:07, 9 sie 2024
Python to język programowania wysokiego poziomu. Na serwerach MyDevil.net możliwe jest uruchamianie stron i aplikacji opartych o ten język.
Spis treści
Dostępne wersje
Domyślną wersją języka Python na serwerach MyDevil jest wersja 3.10 - wywołanie polecenia python
uruchomi interaktywny interpreter języka właśnie w tej wersji. Oprócz tego dostępne są również polecenia python2.7
, python3.7
, python3.8
, python3.9
, python3.10
oraz python3.11
uruchamiające daną wersję Python.
Virtualenv
Virtualenv to narzędzie służące do tworzenia izolowanych środowisk języka Python. Używanie Virtualenv rozwiązuje podstawowy problem związany z różnymi wersjami dodatkowych bibliotek języka oraz uprawnień - wirtualne środowiska są tworzone całkowicie w katalogu domowym użytkownika, co (razem z dostarczonymi przez virtualenv w standardzie narzędziami) pozwala na pełne, samodzielne zarządzanie zainstalowanymi modułami.
Przed przystąpieniem do instalacji należy włączyć możliwość korzystania z własnego oprogramowania - Binexec.
W tym poradniku utworzono i wykorzystano katalog /usr/home/login/.virtualenvs
do zgromadzenia wszystkich utworzonych przez użytkownika wirtualnych środowisk. Nowy katalog można utworzyć za pomocą polecenia mkdir /usr/home/login/.virtualenvs
.
Tworzenie wirtualnego środowiska
Wirtualne środowisko można utworzyć wykonując w wybranym katalogu polecenie virtualenv
podając nazwę środowiska jako parametr:
$ cd /usr/home/login/.virtualenvs $ pip install --upgrade virtualenv $ virtualenv nazwa_środowiska New python executable in nazwa_środowiska/bin/python3.10 Also creating executable in nazwa_środowiska/bin/python Installing setuptools, pip...done.
Takie wywołanie polecenia tworzy nowe środowisko wirtualne wykorzystując domyślną systemową wersję pythona. Za pomocą flagi -p
można wskazać inny plik wykonywalny, co w konsekwencji tworzy środowisko wirtualne używając innej wersji języka Python:
$ cd /usr/home/login/.virtualenvs $ pip install --upgrade virtualenv $ virtualenv nazwa_środowiska -p /usr/local/bin/python3.7 Running virtualenv with interpreter /usr/local/bin/python3.7 Using base prefix '/usr/local' New python executable in nazwa_środowiska/bin/python3.7 Also creating executable in nazwa_środowiska/bin/python Installing setuptools, pip...done.
Aktywacja wirtualnego środowiska
Do uruchomienia skryptu za pomocą interpretera wystarczy podać ścieżkę do nowego pliku wykonywalnego python
(/usr/home/login/.virtualenvs/nazwa_środowiska/bin/python
), jednak w celu ułatwienia korzystania z virtualenv, utworzony został skrypt bin/activate
, którego załadowanie zmodyfikuje środowisko użytkownika w taki sposób, by ułatwić korzystanie z nowego środowiska.
$ source /usr/home/login/.virtualenvs/nazwa_środowiska/bin/activate (nazwa_środowiska) $
Po załadowaniu skryptu aktywacyjnego widać, że zmienił się znak zachęty. Na początku została podana nazwa wirtualnego środowiska, w którym użytkownik aktualnie się znajduje. W tym stanie nie trzeba podawać pełnej ścieżki do interpretera, polecenia python
, pip
oraz easy_install
będą wykonywane korzystając aktualnie wybranego środowiska wirtualnego.
Opuścić dane środowisko można wydając polecenie deactivate
.
Strona WWW
Przy dodawaniu strony WWW typu python należy wskazać plik wykonywalny /usr/home/login/.virtualenvs/nazwa_środowiska/bin/python
, aby środowisko virtualenv było używane do obsługi strony.
Zmienne
Ustawianie zmiennej z poziomu SSH z widocznością dla aplikacji uruchamianej przez Passengera:
- Dopisanie zmiennych do ~/.bash_profile (np. export TESTENV=1).
- Ważne: zmienne nie działają z ~/.bashrc i ~/.shrc
Buforowanie wyjścia plików
Aby wyłączyć należy ustawić w nagłówku odpowiedzi pole X-Accel-Buffering na wartość "no".
Restart aplikacji
Restart aplikacji Python można wykonać za pomocą naszego panelu zarządzania usługą w zakładce WWW, lub przy użyciu polecenia systemu zarządzania kontem Devil: devil www restart domena
.
Limit procesów dla Phusion Passenger
Możliwość ustawienia ilości procesów dla stron typu Python. Składnia polecenia:
devil www options DOMENA processes <ILOŚĆ>
Gdzie: DOMENA oznacza domenę WWW typu Python. ILOŚĆ - ilość procesów w przedziale od 1 do 80% procesów systemowych konta hostingowego.
Opcja dostępna jest również w panelu DevilWEB:
Strony WWW (WWW Websites) ➡ Szczegóły (Details) ➡ Limit procesów (Number of processes) ➡ należy wpisać nową wartość oraz zapisać zmiany przyciskiem Zapisz zmiany (Save changes).
Rozwiązywanie problemów
Niektóre pakiety instalowane przez pip wymagają dodatkowych zmiennych, aby kompilacja przebiegła pomyślnie. Przed uruchomieniem pip install pakiet
należy wykonać:
export CFLAGS="-I/usr/local/include" export CXXFLAGS="-I/usr/local/include"
Część pakietów kompiluje się wyłącznie pod GCC więc aby go wskazać należy wykonać polecenia:
export CC=gcc export CXX=g++
Można wskazać również inną dostępną wersję GCC.
W przypadku przekraczania limitu procesów systemowych przy instalacji pakietów poprzez pip należy wydać polecenia:
export MAX_CONCURRENCY=1 export CPUCOUNT=1 export MAKEFLAGS="-j1"
Logi
Nie należy usuwać katalogu logs, może to spowodować brak działania stron Node.js, Ruby, Python.
Logi błędów zapisują się do pliku error.log w katalogu /usr/home/login/domains/domena/logs/
.