{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Matematikai Algoritmusok és Felfedezések II.\n", "\n", "## 2. Python csomagok, virtuális környezetek.\n", "\n", "### 2021 szeptember 16." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Kitérő: `PATH` változó\n", "\n", "Ha el akarunk indítani egy programot, akkor az operációs rendszer alapvetően abban a mappában keresi a programot, ahol kiadtuk az indítási parancsot. Ha szeretnénk, hogy máshol is keressen akkor a `PATH` változóban kell megadni a keresési mappákat." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C:\\ProgramData\\Anaconda3;C:\\ProgramData\\Anaconda3\\Library\\mingw-w64\\bin;C:\\ProgramData\\Anaconda3\\Library\\usr\\bin;C:\\ProgramData\\Anaconda3\\Library\\bin;C:\\ProgramData\\Anaconda3\\Scripts;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files (x86)\\Calibre2\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;C:\\Program Files\\MiKTeX\\miktex\\bin\\x64\\;c:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\DAL;c:\\Program Files\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Users\\P lv”lgyi D”m”t”r\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\P lv”lgyi D”m”t”r\\Desktop\\ffmpeg\\bin;\n" ] } ], "source": [ "!echo %PATH%" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C:\\ProgramData\\Anaconda3\n", "C:\\ProgramData\\Anaconda3\\Library\\mingw-w64\\bin\n", "C:\\ProgramData\\Anaconda3\\Library\\usr\\bin\n", "C:\\ProgramData\\Anaconda3\\Library\\bin\n", "C:\\ProgramData\\Anaconda3\\Scripts\n", "C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common\n", "C:\\WINDOWS\\system32\n", "C:\\WINDOWS\n", "C:\\WINDOWS\\System32\\Wbem\n", "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\\n", "C:\\Program Files (x86)\\Calibre2\\\n", "C:\\WINDOWS\\System32\\OpenSSH\\\n", "C:\\Program Files\\Intel\\WiFi\\bin\\\n", "C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\\n", "C:\\Program Files\\MiKTeX\\miktex\\bin\\x64\\\n", "c:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\DAL\n", "c:\\Program Files\\Intel\\Intel(R) Management Engine Components\\DAL\n", "C:\\Users\\P lv”lgyi D”m”t”r\\AppData\\Local\\Microsoft\\WindowsApps\n", "C:\\Users\\P lv”lgyi D”m”t”r\\Desktop\\ffmpeg\\bin\n", "\n" ] } ], "source": [ "!echo %PATH:;=&echo.%" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Egy pythonosabb megoldás:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'C:\\\\ProgramData\\\\Anaconda3;C:\\\\ProgramData\\\\Anaconda3\\\\Library\\\\mingw-w64\\\\bin;C:\\\\ProgramData\\\\Anaconda3\\\\Library\\\\usr\\\\bin;C:\\\\ProgramData\\\\Anaconda3\\\\Library\\\\bin;C:\\\\ProgramData\\\\Anaconda3\\\\Scripts;C:\\\\WINDOWS\\\\system32;C:\\\\WINDOWS;C:\\\\WINDOWS\\\\System32\\\\Wbem;C:\\\\WINDOWS\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\;C:\\\\Program Files\\\\PuTTY\\\\;C:\\\\WINDOWS\\\\System32\\\\OpenSSH\\\\;C:\\\\Program Files\\\\TortoiseSVN\\\\bin;C:\\\\Users\\\\Damásdi Gábor\\\\AppData\\\\Local\\\\Microsoft\\\\WindowsApps;C:\\\\Users\\\\Damásdi Gábor\\\\AppData\\\\Local\\\\Programs\\\\MiKTeX 2.9\\\\miktex\\\\bin\\\\x64\\\\;C:\\\\Users\\\\Damásdi Gábor\\\\AppData\\\\Local\\\\Pandoc\\\\'" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "os.environ['PATH']" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Programozás Jupyter nélkül\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Python scriptek\n", "\n", "Általában a kiterjesztés `.py`\n", "\n", "Futtatás: `python file.py` vagy `python3 file.py` \n", "\n", "Eredmény fájlba írása: `python file.py > kimenet.txt`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "### Parancssori argumentumokat \n", "\n", "\n", "A sys modult használhatjuk, egy listát kapunk melyhez `sys.argv` módon férhetünk hozzá.\n", "\n", "\n", "A parancssori argumentumokat stringként olvassa be!\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Saját modul írása\n", "\n", "Egy `module` semmi más csak egy python script. \n", "\n", "Egy csomag (`package`) több modulból álló rendszer." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "### Modulok használata\n", "\n", "#### Module Search Path\n", "\n", "Nagyjából úgy működik mint a szokásos PATH változó, a megadott helyeken keresi a python modulokat. Három helyen keres:\n", "\n", "- Az adott mappa\n", "- A PYTHONPATH környezeti változóba elmentett mappákban\n", "- Python instalálástól függő beállított mappákban\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "['C:\\\\Users\\\\Pálvölgyi Dömötör\\\\Desktop\\\\ujdropbox\\\\Dropbox\\\\egyetem\\\\python\\\\202122\\\\orak',\n", " 'C:\\\\ProgramData\\\\Anaconda3\\\\python37.zip',\n", " 'C:\\\\ProgramData\\\\Anaconda3\\\\DLLs',\n", " 'C:\\\\ProgramData\\\\Anaconda3\\\\lib',\n", " 'C:\\\\ProgramData\\\\Anaconda3',\n", " '',\n", " 'C:\\\\Users\\\\Pálvölgyi Dömötör\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages',\n", " 'C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages',\n", " 'C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\win32',\n", " 'C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\win32\\\\lib',\n", " 'C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\Pythonwin',\n", " 'C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\IPython\\\\extensions',\n", " 'C:\\\\Users\\\\Pálvölgyi Dömötör\\\\.ipython']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sys\n", "sys.path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A 'PYTHONPATH' a PATH változóval azonos módon beállítható. \n", "\n", "```import os\n", "os.environ['PYTHONPATH']```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### `__name__` használata \n", "\n", "A `__name__` változó a modul nevére állítódik be, kivéve ha közvetlenül a modult futtatjuk. Ekkor `__main__` lesz. Így megadhatunk olyan kódot, ami importáláskor nem fut le:\n", "\n", "`if __name__ == \"__main__\":`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Saját package létrehozás\n", "\n", "Tutorial: https://packaging.python.org/tutorials/packaging-projects/\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alapvető szerkezet:\n", "\n", "\n", "`packaging_tutorial/\n", "├── LICENSE\n", "├── pyproject.toml\n", "├── README.md\n", "├── setup.cfg\n", "├── src/\n", "│ └── example_package/\n", "│ ├── __init__.py\n", "│ └── example.py\n", "└── tests/`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Fontos!** Ebben az esetben import example_package parancsal tudunk majd importálni, attól függetlenül, hogy milyen nevet adunk majd a packagenek. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "LICENSE példa:\n", "\n", "Copyright (c) 2018 The Python Packaging Authority\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy\n", "of this software and associated documentation files (the \"Software\"), to deal\n", "in the Software without restriction, including without limitation the rights\n", "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n", "copies of the Software, and to permit persons to whom the Software is\n", "furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all\n", "copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n", "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n", "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n", "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n", "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n", "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n", "SOFTWARE." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "`pyproject.toml ` tartalmazza azokat az információkat amik package futtatásához kellenek a `pip` (vagy `build`) számára. Pl `setuptools` használata esetén:\n", "\n", "`[build-system]\n", "requires = [\n", " \"setuptools>=42\",\n", " \"wheel\"\n", "]\n", "build-backend = \"setuptools.build_meta\"`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### README.md" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Example Package\n", "\n", "This is a simple example package. You can use\n", "[Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)\n", "to write your content." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### `setup.cfg` \n", "\n", "metaadatokat tartalmaz. Pl:\n", "\n", "```[metadata]\n", "name = example-pkg-YOUR-USERNAME-HERE\n", "version = 0.0.1\n", "author = Example Author\n", "author_email = author@example.com\n", "description = A small example package\n", "long_description = file: README.md\n", "long_description_content_type = text/markdown\n", "url = https://github.com/pypa/sampleproject\n", "project_urls =\n", " Bug Tracker = https://github.com/pypa/sampleproject/issues\n", "classifiers =\n", " Programming Language :: Python :: 3\n", " License :: OSI Approved :: MIT License\n", " Operating System :: OS Independent\n", "\n", "[options]\n", "package_dir =\n", " = src\n", "packages = find:\n", "python_requires = >=3.6\n", "\n", "[options.packages.find]\n", "where = src```\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### distribution package generálása\n", "\n", "`python -m build`\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "### Feltöltés teszt pypi-ba\n", "\n", "Regisztrálni kell a testpypi oldalon. https://test.pypi.org/\n", "\n", "`python -m twine upload --repository testpypi dist/*`\n", "\n", "Felhasználó név: `__token__`\n", "\n", "Jelszó: a saját tokened, amit itt tudsz megszerezni: https://test.pypi.org/manage/account/#api-tokens\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Instalálás a tesztoldalról\n", "\n", "`pip install --index-url https://test.pypi.org/simple/ --no-deps example-pkg-name`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Ami gondot okozhat\n", "\n", "- A fájlok kiterjesztése legyen megfelelő\n", "- Importálásnál figyeljünk a névre\n", "- A token beírásánl ctrl-c ctrl-v nem mindig működik\n", "- Látszólag minden jó, még a pip listában is ott a csomag, mégsem működik. Ellenőrizd, hogy a modul tényleg a gépeden van. \n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "# Virtuális környezetek (virtual environment)\n", "https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html\n", "\n", "\n", "A virtuális környezetek lényege, hogy könnyebben tudjuk a packageket/modulokat rendszerezni és használni. Minden egyes környezetben a többitől függetlenül lehetnek csomagjaink. Így például nem okoz gondot, ha különböző projektek egy adott csomagnak különböző verziót használják.\n", "\n", "Több lehetőség van környezetek létrehozására, mi most a `conda`-t nézzük meg." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Alapvetően az `envs` mappába instalálódnak a környezetek." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Létrehozás: `!conda create --name korny_nev`\n", "\n", "- `conda create -n myenv python=3.6 scipy=0.15.0 astroid babel`\n", "\n", "- Váltás adott környezetre: `conda activate korny_nev`\n", "\n", "- Kikapcsolás `conda deactivate`\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Környezetek listája:\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# conda environments:\n", "#\n", "base * C:\\ProgramData\\Anaconda3\n", "\n" ] } ], "source": [ "!conda env list" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Adott környezet moduljai:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# packages in environment at C:\\ProgramData\\Anaconda3:\n", "#\n", "# Name Version Build Channel\n", "_ipyw_jlab_nb_ext_conf 0.1.0 py37_0 \n", "alabaster 0.7.12 py37_0 \n", "altgraph 0.17.2 pypi_0 pypi\n", "anaconda 2019.07 py37_0 \n", "anaconda-client 1.7.2 py37_0 \n", "anaconda-navigator 1.9.7 py37_0 \n", "anaconda-project 0.8.3 py_0 \n", "argparse 1.4.0 pypi_0 pypi\n", "asn1crypto 0.24.0 py37_0 \n", "astroid 2.2.5 py37_0 \n", "astropy 3.2.1 py37he774522_0 \n", "atomicwrites 1.3.0 py37_1 \n", "attrs 19.1.0 py37_1 \n", "babel 2.7.0 py_0 \n", "backcall 0.1.0 py37_0 \n", "backports 1.0 py_2 \n", "backports.functools_lru_cache 1.5 py_2 \n", "backports.os 0.1.1 py37_0 \n", "backports.shutil_get_terminal_size 1.0.0 py37_2 \n", "backports.tempfile 1.0 py_1 \n", "backports.weakref 1.0.post1 py_1 \n", "beautifulsoup4 4.7.1 py37_1 \n", "bitarray 0.9.3 py37he774522_0 \n", "bkcharts 0.2 py37_0 \n", "blas 1.0 mkl \n", "bleach 3.1.0 py37_0 \n", "blosc 1.16.3 h7bd577a_0 \n", "bokeh 1.2.0 py37_0 \n", "boto 2.49.0 py37_0 \n", "bottleneck 1.2.1 py37h452e1ab_1 \n", "branca 0.3.1 pypi_0 pypi\n", "bzip2 1.0.8 he774522_0 \n", "ca-certificates 2019.5.15 0 \n", "certifi 2019.6.16 py37_0 \n", "cffi 1.12.3 py37h7a1dbc1_0 \n", "cftime 1.5.0 pypi_0 pypi\n", "chardet 3.0.4 py37_1 \n", "click 7.0 py37_0 \n", "cloudpickle 1.2.1 py_0 \n", "clyent 1.2.2 py37_1 \n", "colorama 0.4.1 py37_0 \n", "colour 0.1.5 pypi_0 pypi\n", "comtypes 1.1.7 py37_0 \n", "conda 4.7.10 py37_0 \n", "conda-build 3.18.8 py37_0 \n", "conda-env 2.6.0 1 \n", "conda-package-handling 1.3.11 py37_0 \n", "conda-verify 3.4.2 py_1 \n", "console_shortcut 0.1.1 3 \n", "contextlib2 0.5.5 py37_0 \n", "cryptography 2.7 py37h7a1dbc1_0 \n", "curl 7.65.2 h2a8f88b_0 \n", "cycler 0.10.0 py37_0 \n", "cython 0.29.12 py37ha925a31_0 \n", "cytoolz 0.10.0 py37he774522_0 \n", "dask 2.1.0 py_0 \n", "dask-core 2.1.0 py_0 \n", "decorator 4.4.0 py37_1 \n", "defusedxml 0.6.0 py_0 \n", "distributed 2.1.0 py_0 \n", "docutils 0.14 py37_0 \n", "entrypoints 0.3 py37_0 \n", "et_xmlfile 1.0.1 py37_0 \n", "example-pkg-damasdigabor 0.0.1 pypi_0 pypi\n", "exampledamasdigabor 0.0.1 pypi_0 pypi\n", "fastcache 1.1.0 py37he774522_0 \n", "filelock 3.0.12 py_0 \n", "flask 1.1.1 py_0 \n", "freetype 2.9.1 ha9979f8_1 \n", "future 0.17.1 py37_0 \n", "get_terminal_size 1.0.0 h38e98db_0 \n", "gevent 1.4.0 py37he774522_0 \n", "glob2 0.7 py_0 \n", "greenlet 0.4.15 py37hfa6e2cd_0 \n", "h5py 2.9.0 py37h5e291fa_0 \n", "hdf5 1.10.4 h7ebc959_0 \n", "heapdict 1.0.0 py37_2 \n", "html5lib 1.0.1 py37_0 \n", "icc_rt 2019.0.0 h0cc432a_1 \n", "icu 58.2 ha66f8fd_1 \n", "idna 2.8 py37_0 \n", "imageio 2.5.0 py37_0 \n", "imagesize 1.1.0 py37_0 \n", "importlib-metadata 0.17 pypi_0 pypi\n", "importlib_metadata 0.17 py37_1 \n", "intel-openmp 2019.4 245 \n", "ipycanvas 0.4.2 pypi_0 pypi\n", "ipykernel 5.1.1 py37h39e3cac_0 \n", "ipyleaflet 0.12.1 pypi_0 pypi\n", "ipython 7.6.1 py37h39e3cac_0 \n", "ipython_genutils 0.2.0 py37_0 \n", "ipywidgets 7.5.0 py_0 \n", "isort 4.3.21 py37_0 \n", "itsdangerous 1.1.0 py37_0 \n", "jdcal 1.4.1 py_0 \n", "jedi 0.13.3 py37_0 \n", "jinja2 2.10.1 py37_0 \n", "joblib 0.13.2 py37_0 \n", "jpeg 9b hb83a4c4_2 \n", "json5 0.8.4 py_0 \n", "jsonschema 3.0.1 py37_0 \n", "jupyter 1.0.0 py37_7 \n", "jupyter_client 5.3.1 py_0 \n", "jupyter_console 6.0.0 py37_0 \n", "jupyter_core 4.5.0 py_0 \n", "jupyterlab 1.0.2 py37hf63ae98_0 \n", "jupyterlab_server 1.0.0 py_0 \n", "keyring 18.0.0 py37_0 \n", "kiwisolver 1.1.0 py37ha925a31_0 \n", "krb5 1.16.1 hc04afaa_7 \n", "lazy-object-proxy 1.4.1 py37he774522_0 \n", "libarchive 3.3.3 h0643e63_5 \n", "libcurl 7.65.2 h2a8f88b_0 \n", "libiconv 1.15 h1df5818_7 \n", "liblief 0.9.0 ha925a31_2 \n", "libpng 1.6.37 h2a8f88b_0 \n", "libsodium 1.0.16 h9d3ae62_0 \n", "libssh2 1.8.2 h7a1dbc1_0 \n", "libtiff 4.0.10 hb898794_2 \n", "libxml2 2.9.9 h464c3ec_0 \n", "libxslt 1.1.33 h579f668_0 \n", "llvmlite 0.29.0 py37ha925a31_0 \n", "locket 0.2.0 py37_1 \n", "lxml 4.3.4 py37h1350720_0 \n", "lz4-c 1.8.1.2 h2fa13f4_0 \n", "lzo 2.10 h6df0209_2 \n", "m2w64-gcc-libgfortran 5.3.0 6 \n", "m2w64-gcc-libs 5.3.0 7 \n", "m2w64-gcc-libs-core 5.3.0 7 \n", "m2w64-gmp 6.1.0 2 \n", "m2w64-libwinpthread-git 5.0.0.4634.697f757 2 \n", "markupsafe 1.1.1 py37he774522_0 \n", "matplotlib 3.1.0 py37hc8f65d3_0 \n", "mccabe 0.6.1 py37_1 \n", "menuinst 1.4.16 py37he774522_0 \n", "mistune 0.8.4 py37he774522_0 \n", "mkl 2019.4 245 \n", "mkl-service 2.0.2 py37he774522_0 \n", "mkl_fft 1.0.12 py37h14836fe_0 \n", "mkl_random 1.0.2 py37h343c172_0 \n", "mock 3.0.5 py37_0 \n", "more-itertools 7.0.0 py37_0 \n", "mpmath 1.1.0 py37_0 \n", "msgpack-python 0.6.1 py37h74a9793_1 \n", "msys2-conda-epoch 20160418 1 \n", "multipledispatch 0.6.0 py37_0 \n", "navigator-updater 0.2.1 py37_0 \n", "nbconvert 5.5.0 py_0 \n", "nbformat 4.4.0 py37_0 \n", "nbopen 0.6 pypi_0 pypi\n", "netcdf4 1.5.7 pypi_0 pypi\n", "networkx 2.3 py_0 \n", "newdamasdi 0.0.1 pypi_0 pypi\n", "newdamasdiabcd 0.0.1 pypi_0 pypi\n", "nltk 3.4.4 py37_0 \n", "nose 1.3.7 py37_2 \n", "notebook 6.0.0 py37_0 \n", "numba 0.44.1 py37hf9181ef_0 \n", "numexpr 2.6.9 py37hdce8814_0 \n", "numpy 1.16.4 py37h19fb1c0_0 \n", "numpy-base 1.16.4 py37hc3f5095_0 \n", "numpydoc 0.9.1 py_0 \n", "olefile 0.46 py37_0 \n", "openpyxl 2.6.2 py_0 \n", "openssl 1.1.1c he774522_1 \n", "packaging 19.0 py37_0 \n", "pandas 0.24.2 py37ha925a31_0 \n", "pandoc 2.2.3.2 0 \n", "pandocfilters 1.4.2 py37_1 \n", "parso 0.5.0 py_0 \n", "partd 1.0.0 py_0 \n", "path.py 12.0.1 py_0 \n", "pathlib2 2.3.4 py37_0 \n", "patsy 0.5.1 py37_0 \n", "pefile 2021.9.3 pypi_0 pypi\n", "pep8 1.7.1 py37_0 \n", "pickleshare 0.7.5 py37_0 \n", "pillow 6.1.0 py37hdc69c19_0 \n", "pip 19.1.1 py37_0 \n", "pkginfo 1.5.0.1 py37_0 \n", "pluggy 0.12.0 py_0 \n", "ply 3.11 py37_0 \n", "powershell_shortcut 0.0.1 2 \n", "prometheus_client 0.7.1 py_0 \n", "prompt_toolkit 2.0.9 py37_0 \n", "psutil 5.6.3 py37he774522_0 \n", "py 1.8.0 py37_0 \n", "py-lief 0.9.0 py37ha925a31_2 \n", "pycairo 1.19.1 pypi_0 pypi\n", "pycodestyle 2.5.0 py37_0 \n", "pycosat 0.6.3 py37hfa6e2cd_0 \n", "pycparser 2.19 py37_0 \n", "pycrypto 2.6.1 py37hfa6e2cd_9 \n", "pycurl 7.43.0.3 py37h7a1dbc1_0 \n", "pyflakes 2.1.1 py37_0 \n", "pygments 2.4.2 pypi_0 pypi\n", "pyinstaller 4.5.1 pypi_0 pypi\n", "pyinstaller-hooks-contrib 2021.3 pypi_0 pypi\n", "pylint 2.3.1 py37_0 \n", "pyodbc 4.0.26 py37ha925a31_0 \n", "pyopenssl 19.0.0 py37_0 \n", "pyparsing 2.4.0 py_0 \n", "pyqt 5.9.2 py37h6538335_2 \n", "pyreadline 2.1 py37_1 \n", "pyrsistent 0.14.11 py37he774522_0 \n", "pysocks 1.7.0 py37_0 \n", "pytables 3.5.2 py37h1da0976_1 \n", "pytest 5.0.1 py37_0 \n", "pytest-arraydiff 0.3 py37h39e3cac_0 \n", "pytest-astropy 0.5.0 py37_0 \n", "pytest-doctestplus 0.3.0 py37_0 \n", "pytest-openfiles 0.3.2 py37_0 \n", "pytest-remotedata 0.3.1 py37_0 \n", "python 3.7.3 h8c8aaf0_1 \n", "python-dateutil 2.8.0 py37_0 \n", "python-graphviz 0.13.2 pypi_0 pypi\n", "python-libarchive-c 2.8 py37_11 \n", "pytz 2019.1 py_0 \n", "pywavelets 1.0.3 py37h8c2d366_1 \n", "pywin32 223 py37hfa6e2cd_1 \n", "pywin32-ctypes 0.2.0 pypi_0 pypi\n", "pywinpty 0.5.5 py37_1000 \n", "pyyaml 5.1.1 py37he774522_0 \n", "pyzmq 18.0.0 py37ha925a31_0 \n", "qt 5.9.7 vc14h73c81de_0 \n", "qtawesome 0.5.7 py37_1 \n", "qtconsole 4.5.1 py_0 \n", "qtpy 1.8.0 py_0 \n", "requests 2.22.0 py37_0 \n", "requests-toolbelt 0.9.1 pypi_0 pypi\n", "rise 5.7.1 pypi_0 pypi\n", "rope 0.14.0 py_0 \n", "ruamel_yaml 0.15.46 py37hfa6e2cd_0 \n", "scikit-image 0.15.0 py37ha925a31_0 \n", "scikit-learn 0.21.2 py37h6288b17_0 \n", "scipy 1.2.1 py37h29ff71c_0 \n", "seaborn 0.9.0 py37_0 \n", "send2trash 1.5.0 py37_0 \n", "setuptools 41.0.1 py37_0 \n", "simplegeneric 0.8.1 py37_2 \n", "singledispatch 3.4.0.3 py37_0 \n", "sip 4.19.8 py37h6538335_0 \n", "six 1.12.0 py37_0 \n", "snappy 1.1.7 h777316e_3 \n", "snowballstemmer 1.9.0 py_0 \n", "sortedcollections 1.1.2 py37_0 \n", "sortedcontainers 2.1.0 py37_0 \n", "soupsieve 1.8 py37_0 \n", "sphinx 2.1.2 py_0 \n", "sphinxcontrib 1.0 py37_1 \n", "sphinxcontrib-applehelp 1.0.1 py_0 \n", "sphinxcontrib-devhelp 1.0.1 py_0 \n", "sphinxcontrib-htmlhelp 1.0.2 py_0 \n", "sphinxcontrib-jsmath 1.0.1 py_0 \n", "sphinxcontrib-qthelp 1.0.2 py_0 \n", "sphinxcontrib-serializinghtml 1.1.3 py_0 \n", "sphinxcontrib-websupport 1.1.2 py_0 \n", "spyder 3.3.6 py37_0 \n", "spyder-kernels 0.5.1 py37_0 \n", "sqlalchemy 1.3.5 py37he774522_0 \n", "sqlite 3.29.0 he774522_0 \n", "statsmodels 0.10.0 py37h8c2d366_0 \n", "sympy 1.4 py37_0 \n", "tblib 1.4.0 py_0 \n", "terminado 0.8.2 py37_0 \n", "testpath 0.4.2 py37_0 \n", "tk 8.6.8 hfa6e2cd_0 \n", "tomli 1.2.1 pypi_0 pypi\n", "toolz 0.10.0 py_0 \n", "tornado 6.0.3 py37he774522_0 \n", "tqdm 4.32.1 py_0 \n", "traitlets 4.3.2 py37_0 \n", "traittypes 0.2.1 pypi_0 pypi\n", "typing-extensions 3.10.0.2 pypi_0 pypi\n", "unicodecsv 0.14.1 py37_0 \n", "urllib3 1.24.2 py37_0 \n", "vc 14.1 h0510ff6_4 \n", "vs2015_runtime 14.15.26706 h3a45250_4 \n", "wcwidth 0.1.7 py37_0 \n", "webencodings 0.5.1 py37_1 \n", "werkzeug 0.15.4 py_0 \n", "wheel 0.33.4 py37_0 \n", "widgetsnbextension 3.5.0 py37_0 \n", "wikipedia 1.4.0 pypi_0 pypi\n", "win_inet_pton 1.1.0 py37_0 \n", "win_unicode_console 0.5 py37_0 \n", "wincertstore 0.2 py37_0 \n", "winpty 0.4.3 4 \n", "wrapt 1.11.2 py37he774522_0 \n", "xarray 0.14.1 pypi_0 pypi\n", "xlrd 1.2.0 py37_0 \n", "xlsxwriter 1.1.8 py_0 \n", "xlwings 0.15.8 py37_0 \n", "xlwt 1.3.0 py37_0 \n", "xz 5.2.4 h2fa13f4_4 \n", "yaml 0.1.7 hc54c509_2 \n", "zeromq 4.3.1 h33f27b4_3 \n", "zict 1.0.0 py_0 \n", "zipp 0.5.1 py_0 \n", "zlib 1.2.11 h62dcd97_3 \n", "zstd 1.3.7 h508b16e_0 \n" ] } ], "source": [ "!conda list -n base" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Mindeféle egyebeket is lehet, például:\n", "\n", "- környezet másolása\n", "- előre megadott csomagok instalálása\n", "- sok gépen azonos környezet létrehozása" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "# Mit tehetek ha mégis egy szokásos \"programot\" szeretnék fordítani?\n", "\n", "Ez akkor lehet hasznos, ha olyan gépen szeretnénk futtatni, ahol nincs python.\n", "\n", "`PyInstaller` \n", "\n", "Használat: \n", "\n", "`pyinstaller --onefile myscript.py`" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }