Programowanie w systemie UNIX/Python
wersje
[edytuj]- python2
- python3
W domyślnej nowej instalacji Ubuntu 20.04 python nie jest obecny. Jest python3
Konwersja programu z 2 do 3
- różnice
- automatyczna
- offline za pomocą konsolowego programu 2to3[1]
- online : python2to3.com
Instalacja
[edytuj]
sudo apt install python-dev
Sprawdzamy
[edytuj]bash
[edytuj]Aby zobaczyć, które wersje Pythona są obecnie domyślne (uwaga: są to linki symboliczne do określonych wersji)
type python python2 python3
Sprawdzamy położenie pliku python3
whereis python3
Przykładowy wynik:
python3: /usr/bin/python3 /usr/lib/python3 /etc/python3 /usr/share/python3 /usr/share/man/man1/python3.1.gz
w pythonie
[edytuj]W konsoli pythona wpisujemy:
import sys
print(sys.path)
Przykładowy wynik:
['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
lub z konsoli [3]:
python3 -m site
Prykłądowy wynik:
sys.path = [
'/home/a',
'/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/usr/local/lib/python3.6/dist-packages',
'/usr/lib/python3/dist-packages',
]
USER_BASE: '/home/a/.local' (exists)
USER_SITE: '/home/a/.local/lib/python3.6/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
Sposoby korzystania z Pythona
[edytuj]Ręczne wprowadzanie poleceń
[edytuj]Python 2
[edytuj]W konsoli wpisujemy:
python2
Otrzymujemy:
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.
i pojawia się znak:
>>>
Teraz możemy wprowadzać polecenia Pythona
W celu zamknięcia sesji wprowadź skrót klawiszowy Ctrl-Z
Python 3
[edytuj]W konsoli wpisujemy:
python3
Otrzymujemy:
Python 3.6.8 (default, Oct 7 2019, 12:59:55) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Plik z poleceniami Pythona
[edytuj]Plik tekstowy a.py
z kodem w Pythonie (rozszerzenie py) uruchamiamy za pomocą komendy:
python a.py
Skrypt z poleceniami Pythona
[edytuj]Możemy utworzyć skrypt bashu:[4]
#! /usr/local/bin/python
import sys
if '-h' in sys.argv or '--help' in sys.argv or '--help' in sys.argv:
print '''
help.py--does nothing useful (yet)
options: -h, -help, or --help-display this help
Copyright (c) Jacek Artymiak, 2000 '''
sys.exit(0)
else:
print "I don't recognize this option"
sys.exit(0)
zapisać go jako help.py
nadać mu prawo wykonywalności:
chmod 0700 help.py
i uruchomić go z konsoli:
./help.py -h
lub
./help.py -o
VectorFieldPlot
[edytuj]Moduły
[edytuj]Menedżery pakietów:
- pip
- pipenv
- Anaconda Navigator
- conda
Moduły do obliczeń równoległych
- ipyparallel
- Dask - Dask to otwarta biblioteka Pythona do obliczeń równoległych. Dask skaluje kod Pythona z wielordzeniowych maszyn lokalnych do dużych rozproszonych klastrów w chmurze. Dask zapewnia znajomy interfejs użytkownika, odzwierciedlając interfejsy API innych bibliotek w ekosystemie PyData, w tym: Pandas, scikit-learn i NumPy. Udostępnia również interfejsy API niskiego poziomu, które pomagają programistom równolegle uruchamiać niestandardowe algorytmy.
gmpy
[edytuj]wersje
- gmpy
- gmpy2
pomoc:[5]
import gmpy # import(gmpy)
help(gmpy)
tkinter
[edytuj]- pythontutorial : tkinter
- ttkbootstrap
- Python Tkinter GUI Design Using ttkbootstrap - Complete Course from freeCodeCamp.org
Manim
[edytuj]matplotlib
[edytuj]instalacja :
sudo apt-get install python3-matplotlib
użycie
python3
Python 3.8.5 (default, Jan 27 2021, 15:41:15)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
moduł colors
[edytuj]numpy
[edytuj]Instalacja[6]
pip3 install numpy
pip3 show numpy
OpenCV
[edytuj]sudo apt-get install python3-opencv
Program do analizy obrazu[7]
- nie korzysta z pętli fo i CPU ( są one powolne i podatne na błędy )
- wykorzystuje wektoryzację z pomocą bibliotek Numpy lub OpenCV.
import cv2
import numpy as np
# Load image
im = cv2.imread('Mushroom1.jpg', cv2.IMREAD_GRAYSCALE)
# Calculate total number of pixels in image
nPixels = im.size
# Iterate over the possible threshold values, skipping 10 at a time for speed of development/checking
for T in range(1,255,10):
# Make all pixels under threshold black, leaving those above threshold unchanged
thresholded = (im < T) * im
# Count the non-zero pixels
nonZero = cv2.countNonZero(thresholded)
Zero = nPixels - nonZero
# Sum the non-zero pixels
sum = np.sum(thresholded)
# Print some statistics
print(f'T={T}, zero={Zero}, nonZero={nonZero}, sum={sum}')
# Save the image for animation
cv2.imwrite(f'DEBUG-T{T:03}.png', thresholded)
Zobacz również stronę OpenCV
scikit-image
[edytuj]scikit-image is a collection of algorithms for image processing.
scipy
[edytuj]Instalacja: [8]
sudo apt-get install python-scipy sudo pip install scipy
PyOpenGL
[edytuj]opis[9]
PyOpenCL
[edytuj]apt-get install python-pyopencl
pip
[edytuj]Instalujemy python-pip i python-setuptools:[10]
sudo apt-get install python-pip
uaktualnij pip[11]
pip install --upgrade pip
pip3
[edytuj]Instalacja
sudo apt install python3-pip
Wersja
pip3 -V
plotoptix
[edytuj]- plotoptix Data visualisation and ray tracing in Python based on NVIDIA OptiX framework.
seaborn
[edytuj]- [1] statistical data visualization
gr
[edytuj]Gr [12]
vedo
[edytuj]- vedo A python module for scientific analysis of 3D data based on VTK and Numpy
vedo https://vedo.embl.es/examples/data/panther.stl.gz
Powłoki
[edytuj]iPython
[edytuj]IPython (Interactive Python)[13] – interaktywna powłoka dla języka Python, o dodatkowych elementach składni i poszerzonych możliwościach:
- Powłoki interaktywne (oparte na terminalu i Qt)
- Oparty na przeglądarce interfejs notebooka, w tym dla Jupyter ( IPython jako powłoka i jądro Pythona dla Jupytera )
- Obsługa interaktywnej wizualizacji danych i korzystania z zestawów narzędzi GUI
- Elastyczne, wbudowane interpretery do załadowania do własnych projektów
- Narzędzia do obliczeń równoległych.
Instalacja
[edytuj]- w wirtualnym środowisku zalecany sposób
- pip
- docker-ipython- Run IPython inside Docker
- Anaconda (Python distribution) - Anaconda to dystrybucja języków programowania Python i R do obliczeń naukowych (nauka o danych, aplikacje do uczenia maszynowego, przetwarzanie danych na dużą skalę, analizy predykcyjne itp.), Które mają na celu uproszczenie zarządzania pakietami i wdrażania
pip install ipython sudo pip install ipython
W wirtualnym środowisku:
mkdir virtual_environment sudo apt install python3.10-venv python3 -m venv virtual_environment
Aktywujemy wirtualne środowisko:
source ~/virtual_environment/bin/activate
Pracujemy, instalujemy pakiety w środowisku wirtualnym
Zamykamy:
deactivate
Architektura
[edytuj]Integracja kolejki komunikatów ØMQ (por. Message Oriented Middleware) wyraźnie oddziela backend jako jednostkę obliczeniową, taką jak interpreter Pythona, od frontendu jako poziomu wyświetlania. Ta separacja pozwala na uniwersalne użycie IPython dla różnych backendów (często nazywanych także jądrem) i frontendów. Z pomocą opartego na zdarzeniach serwera sieciowego Python Tornado i WebSockets, interfejs sieciowy stanowi możliwy front-end, co pozwala na elastyczne wykorzystanie IPython w nowoczesnej sieci (Web 2.0).
Notatnik
[edytuj]IPython jest zorientowany na dokumenty. Dokument IPython jest określany jako notatnik, jak zwykle w środowisku naukowym. Notatnik to plik JSON zawierający uporządkowaną listę komórek wejściowych i wyjściowych, które mogą reprezentować kod, zwykły tekst, dane wyjściowe LaTeX, wykresy i różne formaty multimediów. Oznacza to, że notatnik IPython zasadniczo różni się od prostego skryptu Pythona, który (zwykle) zawiera tylko kod. Począwszy od wersji 4.0, projekt jako całość został podzielony i dodatkowo zmodularyzowany. IPython nie jest już dystrybuowany jako pojedynczy, monolityczny pakiet, ale jest teraz ograniczony do podstawowych komponentów powiązanych z Pythonem. Z drugiej strony wszystkie moduły niezależne od języka (takie jak notebook, Qtconsole i kolejka komunikatów) zostały zlecone do nowego projektu o nazwie Jupyter i dlatego mogą być również używane i aktualizowane niezależnie od IPython w przyszłości. ]
IPython został opracowany w 2001 roku przez Fernando Péreza, wywodzi się z dziedziny obliczeń naukowych, ponieważ znał notatnik z Mathematica i brakowało mu tego w Pythonie, zaczął programować jeden dla Pythona. Integracja Matplotlib z interfejsem notebooka czyni go otwartym konkurentem dla popularnego oprogramowania numerycznego Matlab, dlatego połączenie IPython i Matplotlib jest często określane jako Pylab.
-
Schemat pracy ( ang. Workflow ) Przepływy pracy IPython Notebook od wejścia do wyjścia
uruchamiamy
[edytuj](virtual_environment) a@zalman:~$ ipython Python 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0] Type 'copyright', 'credits' or 'license' for more information IPython 8.14.0 -- An enhanced Interactive Python. Type '?' for help. In [1]:
Lista pakietów
[edytuj]pip list Package Version ----------------- ------- asttokens 2.2.1 backcall 0.2.0 decorator 5.1.1 executing 1.2.0 ipython 8.14.0 jedi 0.18.2 matplotlib-inline 0.1.6 parso 0.8.3 pexpect 4.8.0 pickleshare 0.7.5 pip 22.0.2 prompt-toolkit 3.0.38 ptyprocess 0.7.0 pure-eval 0.2.2 Pygments 2.15.1 setuptools 59.6.0 six 1.16.0 stack-data 0.6.2 traitlets 5.9.0 wcwidth 0.2.6
pip list --local[14]
import pkg_resources installed_packages = pkg_resources.working_set installed_packages_list = sorted(["%s==%s" % (i.key, i.version) for i in installed_packages]) print(installed_packages_list)
Lub:[15]
help("modules") Please wait a moment while I gather a list of all available modules... IPython _thread glob rlcompleter __future__ _threading_local graphlib runpy _abc _tkinter grp sched _aix_support _tracemalloc gzip secrets _ast _uuid hashlib select _asyncio _warnings heapq selectors _bisect _weakref hmac setuptools _blake2 _weakrefset html shelve _bootsubprocess _xxsubinterpreters http shlex _bz2 _xxtestfuzz imaplib shutil _codecs _zoneinfo imghdr signal _codecs_cn abc imp site _codecs_hk aifc importlib sitecustomize _codecs_iso2022 antigravity inspect six _codecs_jp argparse io smtpd _codecs_kr array ipaddress smtplib _codecs_tw ast itertools sndhdr _collections asttokens jedi socket _collections_abc asynchat json socketserver _compat_pickle asyncio keyword spwd _compression asyncore lib2to3 sqlite3 _contextvars atexit linecache sre_compile _crypt audioop locale sre_constants _csv backcall logging sre_parse _ctypes base64 lzma ssl _ctypes_test bdb mailbox stack_data _curses binascii mailcap stat _curses_panel binhex marshal statistics _datetime bisect math string _dbm builtins matplotlib_inline stringprep _decimal bz2 mimetypes struct _distutils_hack cProfile mmap subprocess _distutils_system_mod calendar modulefinder sunau _elementtree cgi multiprocessing symtable _functools cgitb netrc sys _gdbm chunk nis sysconfig _hashlib cmath nntplib syslog _heapq cmd ntpath tabnanny _imp code nturl2path tarfile _io codecs numbers telnetlib _json codeop opcode tempfile _locale collections operator termios _lsprof colorsys optparse test _lzma compileall os textwrap _markupbase concurrent ossaudiodev this _md5 configparser parso threading _multibytecodec contextlib pathlib time _multiprocessing contextvars pdb timeit _opcode copy pexpect tkinter _operator copyreg pickle token _osx_support crypt pickleshare tokenize _pickle csv pickletools trace _posixshmem ctypes pip traceback _posixsubprocess curses pipes tracemalloc _py_abc dataclasses pkg_resources traitlets _pydecimal datetime pkgutil tty _pyio dbm platform turtle _queue decimal plistlib types _random decorator poplib typing _sha1 difflib posix unicodedata _sha256 dis posixpath unittest _sha3 distutils pprint urllib _sha512 doctest profile uu _signal email prompt_toolkit uuid _sitebuiltins encodings pstats venv _socket ensurepip pty warnings _sqlite3 enum ptyprocess wave _sre errno pure_eval wcwidth _ssl executing pwd weakref _stat faulthandler py_compile webbrowser _statistics fcntl pyclbr wsgiref _string filecmp pydoc xdrlib _strptime fileinput pydoc_data xml _struct fnmatch pyexpat xmlrpc _symtable fractions pygments xxlimited _sysconfigdata__linux_x86_64-linux-gnu ftplib queue xxlimited_35 _sysconfigdata__x86_64-linux-gnu functools quopri xxsubtype _testbuffer gc random zipapp _testcapi genericpath re zipfile _testimportmultiple getopt readline zipimport _testinternalcapi getpass reprlib zlib _testmultiphase gettext resource zoneinfo Enter any module name to get more help. Or, type "modules spam" to search for modules whose name or summary contain the string "spam".
Zobacz również
[edytuj]- Więcej informacji o Pythonie
- PyOpenCL[16]
- PyCuda[17]
- Composing Programs by John DeNero
- pablo insente: Introduction to Linear Algebra for Applied Machine Learning with Python
- marcomusy: awesome-scientific-python
- commons User Tamfang programs
Odnośniki
[edytuj]- ↑ 2to3 Automated Python 2 to 3 code translation
- ↑ Configuring Ubuntu for Python Development
- ↑ stackoverflow question : how-do-i-find-the-location-of-my-python-site-packages-directory
- ↑ Python Programming for Beginners May 01, 2000 By Jacek Artymiak
- ↑ stackoverflow question: gmpy-documentation-anywhere
- ↑ unixcop : how-to-install-numpy-on-ubuntu
- ↑ stackoverflow question: is-there-any-good-command-to-get-pixels-gray-value-in-this-case-im-working-on
- ↑ stackoverflow question : importerror-no-module-named-scipy
- ↑ PyOPenGl by ElieDeBrauwer
- ↑ Installing pip/setuptools/wheel with Linux Package Managers
- ↑ Wheel A built-package format for Python.
- ↑ GR is a universal framework for cross-platform visualization applications.
- ↑ ipython - strona domowa
- ↑ activestate: how-to-list-installed-python-packages ?
- ↑ stackoverflow question: how-can-i-see-my-installed-libraries-in-python ?
- ↑ PyOpenCL by Andreas Klöckner
- ↑ PyCUDA by Andreas Klöckner