Python

Python to język programowania wysokiego poziomu. Na serwerach MyDevil.net możliwe jest uruchamianie stron i aplikacji opartych o ten język.

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, python3.11 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.

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/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

Logi błędów zapisują się do pliku error.log w katalogu /usr/home/login/domains/domena/logs/.

Odnośniki zewnętrzne