Python: Różnice pomiędzy wersjami

(Odnośniki zewnętrzne)
 
(Nie pokazano 27 wersji utworzonych przez 5 użytkowników)
Linia 3: Linia 3:
 
=== Dostępne wersje ===  
 
=== Dostępne wersje ===  
  
Domyślną wersją języka ''Python'' na serwerach MyDevil jest wersja 2.7.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.2</code>, <code>python3.3</code> oraz <code>python3.4</code>, służące do uruchamiania interpretera w wersjach: domyślnej (2.7.8), 3.2.5, 3.3.5, oraz 3.4.1.
+
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 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.
+
''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 utworzyć za pomocą polecenia <code>mkdir /usr/home/''login''/.virtualenvs</code>.}}
+
{{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 nazwę środowiska jako parametr:
+
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/python2.7
+
  {{ 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ą systemową wersję pythona, tj. 2.7.9. 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'':  
+
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.4
+
{{ prompt }}pip install --upgrade virtualenv
  {{output}}Running virtualenv with interpreter /usr/local/bin/python3.4
+
  {{ 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.4
+
  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 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.
+
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ł 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.
+
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>.
+
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 pakiety (np. Pillow) instalowane przez pip wymagają dodatkowych zmiennych, aby kompilacja przebiegła pomyślnie. Przed uruchomieniem <code>pip install ''pakiet''</code> należy wykonać:
+
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.

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.

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

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

Odnośniki zewnętrzne