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.
- Images with src code
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