Programowanie w systemie UNIX/Python

Z Wikibooks, biblioteki wolnych podręczników.

wersje[edytuj]

  • python2
  • python3

W domyślnej nowej instalacji Ubuntu 20.04 python nie jest obecny. Jest python3

Konwersja programu z 2 do 3

Instalacja[edytuj]

  • Opis
  • jak skonfigurować Ubuntu do pracy w Pythonie[2]


 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]

VectorFieldPlot

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]

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]

Architektura obliczeń równolełych w IPython

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.

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]

Odnośniki[edytuj]

  1. 2to3 Automated Python 2 to 3 code translation
  2. Configuring Ubuntu for Python Development
  3. stackoverflow question : how-do-i-find-the-location-of-my-python-site-packages-directory
  4. Python Programming for Beginners May 01, 2000 By Jacek Artymiak
  5. stackoverflow question: gmpy-documentation-anywhere
  6. unixcop : how-to-install-numpy-on-ubuntu
  7. stackoverflow question: is-there-any-good-command-to-get-pixels-gray-value-in-this-case-im-working-on
  8. stackoverflow question : importerror-no-module-named-scipy
  9. PyOPenGl by ElieDeBrauwer
  10. Installing pip/setuptools/wheel with Linux Package Managers
  11. Wheel A built-package format for Python.
  12. GR is a universal framework for cross-platform visualization applications.
  13. ipython - strona domowa
  14. activestate: how-to-list-installed-python-packages ?
  15. stackoverflow question: how-can-i-see-my-installed-libraries-in-python ?
  16. PyOpenCL by Andreas Klöckner
  17. PyCUDA by Andreas Klöckner