Python: Różnice pomiędzy wersjami
(→Buforowanie wyjścia plików) |
(python 3.11) |
||
Linia 3: | Linia 3: | ||
=== Dostępne wersje === | === Dostępne wersje === | ||
− | Domyślną wersją języka ''Python'' na serwerach MyDevil jest wersja 3.8 - 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.6</code>, <code>python3.7</code>, <code>python3.8</code>, <code>python3.5</code> oraz <code>python3. | + | Domyślną wersją języka ''Python'' na serwerach MyDevil jest wersja 3.8 - 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.6</code>, <code>python3.7</code>, <code>python3.8</code>, <code>python3.5</code>, <code>python3.10</code> oraz <code>python3.11</code> uruchamiające daną wersję Python. |
=== Virtualenv === | === Virtualenv === |
Wersja z 16:03, 15 gru 2022
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.8 - 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.6
, python3.7
, python3.8
, python3.5
, 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 $ virtualenv nazwa_środowiska New python executable in nazwa_środowiska/bin/python3.6 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 $ virtualenv nazwa_środowiska -p /usr/local/bin/python2.7 Running virtualenv with interpreter /usr/local/bin/python2.7 Using base prefix '/usr/local' New python executable in nazwa_środowiska/bin/python2.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/
.