Skip to content

Narzędzia deweloperskie

VENV - wirtualne środowisko

Jest to bardzo potrzebne gdy nie chcemy przypadkiem namieszać w naszych już zainstalowanych paczkach pythonowych, a chcemy odpalić jakiś projekt wymagający konkretnych wersji danych pakietów. Dokumentacja

Instalacja dla debianów: sudo apt install python3-venv.

Tworzenie nowego venva

python3 -m venv /path/to/new/virtual/environment

Aby aktywować venva (czyli odpalić w pythona korzystającego z pakietów w tym venvie) trzeba użyć komendy

Shell Command to activate virtual environment
bash/zsh $ source <venv>/bin/activate
fish $ source <venv>/bin/activate.fish csh/tcsh $ source <venv>/bin/activate.csh
PowerShell $ <venv>/bin/Activate.ps1
(Windows)cmd.exe C:\> <venv>\Scripts\activate.bat
(Windows)PowerShell PS C:\> <venv>\Scripts\Activate.ps1

Uruchamianie skryptu w trybie interaktywnym

Z poziomu basha:

python -i ./skrypt.py

Z poziomu pythona:

exec(open("./first.py").read())

Dzięki temu po zakończeniu wykonywania nie wyjdziemy ze skryptu i będziemy mogli kontynuować jego pracę używając już zaimportowanych przez niego bibliotek oraz zmiennych, które utworzył.

Użycie modułów z C/C++

Do tego warto użyć bibliotek booosta.

Przykładowy Github Gist zawierający prosty projekt obrazujący działanie: TUTAJ

Guideline'y

Implementacje Pythonowe

Warto wiedzieć, że jest wiele implementacji pythona. Najbardziej znaną jest CPython napisany w C.
Ze względu na wydajność warto się zapoznać z:

  • PyPy - kompilator typu JIT
  • Nuitka link - o ile dobrze rozumiem to taki jakby kompilator pythona

Ze względu na kompatybilność:

  • Jython (java)
  • IronPython (C#)

Pełna lista implementacji link

Dokumentowanie

Diagramy klas

Do tego można użyć:

  • pyreverse - chyba najprostsze (do pobrania z pipa)
pyreverse -o png moje_klasy.py

Debugowanie

pdb

import pdb
pdb.set_trace() #w tej linii skrypt się zatrzyma i będzie można się rozejrzeć
# (Pdb)

zapytania w trybie debuggera :

  • w - where (na stosie)
  • u -up
  • d - down
  • c/continue - continue
  • args - wyświetla wszystkie argumenty, jakie dana funkcja otrzymała (ta w której obecnie jesteśmy) Poza tym reszta rzeczy odpowiada zwykłemu pisaniu w pythonie, możemy zmieniać zmienne, printować je, uruchamiać pętle etc.

Warto wtedy używać też: locals() - ładuje do słownika wszystkie obecnie dostępne funkcje

inspect

import inspect

inspect.getsource(xyz)# wypisuje jak dana funkcja jest napisana

ast

#podobnie jak wyżej
import ast

GDB

LINK

/TODO opisać dokładniej

/TODO opisać działanie libki subprocess (czyli jak ogarnąć prawdziwą wielowątkowość w pythonie), oraz uruchamianie procesów.