{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用 Anaconda"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[Anaconda](http://www.continuum.io/downloads)是一个很好用的Python IDE，它集成了很多科学计算需要使用的**python**第三方工具包。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## conda 的使用 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "根据自己的操作系统安装好[Anaconda](http://www.continuum.io/downloads)后，在命令行下输入：\n",
    "\n",
    "    conda list\n",
    "\n",
    "可以看已经安装好的**python**第三方工具包，这里我们使用 `magic` 命令 `%%cmd` 在 `ipython cell` 中来执行这个命令："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# packages in environment at C:\\Users\\root\\anaconda3\\envs\\py_36:\n",
      "#\n",
      "# Name                    Version                   Build  Channel\n",
      "absl-py                   0.12.0                   pypi_0    pypi\n",
      "anyio                     3.6.2                    pypi_0    pypi\n",
      "appdirs                   1.4.4                    pypi_0    pypi\n",
      "argon2-cffi               20.1.0           py38h2bbff1b_1    defaults\n",
      "async_generator           1.10               pyhd3eb1b0_0    defaults\n",
      "attrs                     20.3.0             pyhd3eb1b0_0    defaults\n",
      "babel                     2.11.0                   pypi_0    pypi\n",
      "backcall                  0.2.0              pyhd3eb1b0_0    defaults\n",
      "blas                      1.0                         mkl    defaults\n",
      "bleach                    3.3.0              pyhd3eb1b0_0    defaults\n",
      "ca-certificates           2024.3.11            haa95532_0    defaults\n",
      "cachetools                4.2.2                    pypi_0    pypi\n",
      "certifi                   2024.6.2         py38haa95532_0    defaults\n",
      "cffi                      1.14.5           py38hcd4344a_0    defaults\n",
      "chardet                   4.0.0                    pypi_0    pypi\n",
      "click                     8.0.4                    pypi_0    pypi\n",
      "colorama                  0.4.4              pyhd3eb1b0_0    defaults\n",
      "contextvars               2.4                      pypi_0    pypi\n",
      "cudatoolkit               11.0.221             h74a9793_0    defaults\n",
      "cycler                    0.10.0                   py38_0    defaults\n",
      "dataclasses               0.8                pyh6d0b6a4_7    defaults\n",
      "decorator                 5.0.6              pyhd3eb1b0_0    defaults\n",
      "defusedxml                0.7.1              pyhd3eb1b0_0    defaults\n",
      "docker-pycreds            0.4.0                    pypi_0    pypi\n",
      "easydict                  1.9                      pypi_0    pypi\n",
      "entrypoints               0.3                      py38_0    defaults\n",
      "filelock                  3.15.4                   pypi_0    pypi\n",
      "freetype                  2.10.4               hd328e21_0    defaults\n",
      "fsspec                    2024.6.1                 pypi_0    pypi\n",
      "gitdb                     4.0.9                    pypi_0    pypi\n",
      "gitpython                 3.1.18                   pypi_0    pypi\n",
      "google-auth               1.30.0                   pypi_0    pypi\n",
      "google-auth-oauthlib      0.4.4                    pypi_0    pypi\n",
      "grpcio                    1.38.0                   pypi_0    pypi\n",
      "icc_rt                    2019.0.0             h0cc432a_1    defaults\n",
      "icu                       58.2                 ha925a31_3    defaults\n",
      "idna                      2.10                     pypi_0    pypi\n",
      "immutables                0.19                     pypi_0    pypi\n",
      "importlib-metadata        3.10.0           py38haa95532_0    defaults\n",
      "importlib_metadata        3.10.0               hd3eb1b0_0    defaults\n",
      "intel-openmp              2021.4.0                 pypi_0    pypi\n",
      "ipykernel                 5.3.4            py38h5ca1d4c_0    defaults\n",
      "ipython                   7.16.3                   pypi_0    pypi\n",
      "ipython_genutils          0.2.0              pyhd3eb1b0_1    defaults\n",
      "ipywidgets                7.6.3                    pypi_0    pypi\n",
      "jedi                      0.17.0                   py38_0    defaults\n",
      "jinja2                    2.11.3             pyhd3eb1b0_0    defaults\n",
      "joblib                    1.0.1              pyhd3eb1b0_0    defaults\n",
      "jpeg                      9b                   hb83a4c4_2    defaults\n",
      "json5                     0.9.16                   pypi_0    pypi\n",
      "jsonschema                3.2.0                      py_2    defaults\n",
      "jupyter                   1.0.0                    pypi_0    pypi\n",
      "jupyter-console           6.4.0                    pypi_0    pypi\n",
      "jupyter-contrib-core      0.3.3                    pypi_0    pypi\n",
      "jupyter-contrib-nbextensions 0.5.1                    pypi_0    pypi\n",
      "jupyter-core              4.9.2                    pypi_0    pypi\n",
      "jupyter-highlight-selected-word 0.2.0                    pypi_0    pypi\n",
      "jupyter-latex-envs        1.4.6                    pypi_0    pypi\n",
      "jupyter-nbextensions-configurator 0.4.1                    pypi_0    pypi\n",
      "jupyter-server            1.13.1                   pypi_0    pypi\n",
      "jupyter_client            6.1.12             pyhd3eb1b0_0    defaults\n",
      "jupyter_core              4.7.1            py38haa95532_0    defaults\n",
      "jupyterlab                3.2.9                    pypi_0    pypi\n",
      "jupyterlab-server         2.10.3                   pypi_0    pypi\n",
      "jupyterlab-widgets        1.0.0                    pypi_0    pypi\n",
      "jupyterlab_pygments       0.1.2                      py_0    defaults\n",
      "jupyterlab_widgets        1.1.1              pyhd8ed1ab_0    conda-forge\n",
      "kiwisolver                1.3.1            py38hd77b12b_0    defaults\n",
      "libpng                    1.6.37               h2a8f88b_0    defaults\n",
      "libsodium                 1.0.18               h62dcd97_0    defaults\n",
      "libtiff                   4.1.0                h56a325e_1    defaults\n",
      "libuv                     1.40.0               he774522_0    defaults\n",
      "lxml                      4.6.3                    pypi_0    pypi\n",
      "lz4-c                     1.9.3                h2bbff1b_0    defaults\n",
      "m2w64-gcc-libgfortran     5.3.0                         6    defaults\n",
      "m2w64-gcc-libs            5.3.0                         7    defaults\n",
      "m2w64-gcc-libs-core       5.3.0                         7    defaults\n",
      "m2w64-gmp                 6.1.0                         2    defaults\n",
      "m2w64-libwinpthread-git   5.0.0.4634.697f757               2    defaults\n",
      "markdown                  3.3.4                    pypi_0    pypi\n",
      "markupsafe                1.1.1            py38he774522_0    defaults\n",
      "matplotlib                3.3.4            py38haa95532_0    defaults\n",
      "matplotlib-base           3.3.4            py38h49ac443_0    defaults\n",
      "matplotlib-inline         0.1.6            py38haa95532_0    defaults\n",
      "mistune                   0.8.4           py38he774522_1000    defaults\n",
      "mkl                       2021.4.0                 pypi_0    pypi\n",
      "mkl-service               2.3.0            py38h196d8e1_0    defaults\n",
      "mkl_fft                   1.3.0            py38h46781fe_0    defaults\n",
      "mkl_random                1.1.1            py38h47e9c7a_0    defaults\n",
      "mpmath                    1.3.0                    pypi_0    pypi\n",
      "msys2-conda-epoch         20160418                      1    defaults\n",
      "nb_conda                  2.2.1                    py38_1    defaults\n",
      "nb_conda_kernels          2.3.1            py38haa95532_0    defaults\n",
      "nbclassic                 0.3.5                    pypi_0    pypi\n",
      "nbclient                  0.5.3              pyhd3eb1b0_0    defaults\n",
      "nbconvert                 5.6.1                    py38_0    defaults\n",
      "nbformat                  5.1.3              pyhd3eb1b0_0    defaults\n",
      "nest-asyncio              1.5.1              pyhd3eb1b0_0    defaults\n",
      "networkx                  3.1                      pypi_0    pypi\n",
      "ninja                     1.10.2               h6d14046_1    defaults\n",
      "notebook                  6.3.0            py38haa95532_0    defaults\n",
      "numpy                     1.18.5                   pypi_0    pypi\n",
      "oauthlib                  3.1.0                    pypi_0    pypi\n",
      "olefile                   0.46               pyhd3eb1b0_0    defaults\n",
      "opencv-python             4.8.1.78                 pypi_0    pypi\n",
      "openssl                   1.1.1w               h2bbff1b_0    defaults\n",
      "packaging                 20.9               pyhd3eb1b0_0    defaults\n",
      "pandas                    1.1.5            py38hf11a4ad_0    defaults\n",
      "pandoc                    2.12                 haa95532_0    defaults\n",
      "pandocfilters             1.4.3            py38haa95532_1    defaults\n",
      "parso                     0.8.2              pyhd3eb1b0_0    defaults\n",
      "pathtools                 0.1.2                    pypi_0    pypi\n",
      "peewee                    3.14.4           py38h91b5285_0    conda-forge\n",
      "pickleshare               0.7.5           pyhd3eb1b0_1003    defaults\n",
      "pillow                    8.2.0            py38h4fa10fc_0    defaults\n",
      "pip                       21.3.1                   pypi_0    pypi\n",
      "prometheus_client         0.10.1             pyhd3eb1b0_0    defaults\n",
      "prompt-toolkit            3.0.17             pyh06a4308_0    defaults\n",
      "protobuf                  3.19.6                   pypi_0    pypi\n",
      "psutil                    6.0.0                    pypi_0    pypi\n",
      "py-cpuinfo                9.0.0                    pypi_0    pypi\n",
      "pyasn1                    0.4.8                    pypi_0    pypi\n",
      "pyasn1-modules            0.2.8                    pypi_0    pypi\n",
      "pycparser                 2.20                       py_2    defaults\n",
      "pygments                  2.8.1              pyhd3eb1b0_0    defaults\n",
      "pyparsing                 2.4.7              pyhd3eb1b0_0    defaults\n",
      "pyqt                      5.9.2            py38ha925a31_4    anaconda\n",
      "pyqt5                     5.15.6                   pypi_0    pypi\n",
      "pyqt5-qt5                 5.15.2                   pypi_0    pypi\n",
      "pyqt5-sip                 12.9.1                   pypi_0    pypi\n",
      "pyrsistent                0.17.3           py38he774522_0    defaults\n",
      "python                    3.8.0                hff0d562_2    defaults\n",
      "python-dateutil           2.8.1              pyhd3eb1b0_0    defaults\n",
      "python_abi                3.8                      2_cp38    conda-forge\n",
      "pytz                      2021.1             pyhd3eb1b0_0    defaults\n",
      "pywin32                   227              py38he774522_1    defaults\n",
      "pywinpty                  0.5.7                    py38_0    defaults\n",
      "pyyaml                    5.4.1                    pypi_0    pypi\n",
      "pyzmq                     20.0.0           py38hd77b12b_1    defaults\n",
      "qt                        5.9.7            vc14h73c81de_0    defaults\n",
      "qtconsole                 5.1.0                    pypi_0    pypi\n",
      "qtpy                      1.9.0                    pypi_0    pypi\n",
      "requests                  2.25.1                   pypi_0    pypi\n",
      "requests-oauthlib         1.3.0                    pypi_0    pypi\n",
      "rsa                       4.7.2                    pypi_0    pypi\n",
      "scikit-learn              0.24.1           py38hf11a4ad_0    defaults\n",
      "scipy                     1.5.2            py38h14eb087_0    defaults\n",
      "seaborn                   0.11.2             pyhd3eb1b0_0    defaults\n",
      "send2trash                1.5.0              pyhd3eb1b0_1    defaults\n",
      "sentry-sdk                2.6.0                    pypi_0    pypi\n",
      "setproctitle              1.2.3                    pypi_0    pypi\n",
      "setuptools                52.0.0           py38haa95532_1    defaults\n",
      "sip                       4.19.8           py38ha925a31_0    defaults\n",
      "six                       1.15.0             pyhd3eb1b0_0    defaults\n",
      "smmap                     5.0.0                    pypi_0    pypi\n",
      "sniffio                   1.2.0                    pypi_0    pypi\n",
      "sqlite                    3.35.4               h2bbff1b_0    defaults\n",
      "sympy                     1.12.1                   pypi_0    pypi\n",
      "tbb                       2021.13.0                pypi_0    pypi\n",
      "tensorboard               2.5.0                    pypi_0    pypi\n",
      "tensorboard-data-server   0.6.1                    pypi_0    pypi\n",
      "tensorboard-plugin-wit    1.8.0                    pypi_0    pypi\n",
      "terminado                 0.9.4            py38haa95532_0    defaults\n",
      "testpath                  0.4.4              pyhd3eb1b0_0    defaults\n",
      "threadpoolctl             2.1.0              pyh5ca1d4c_0    defaults\n",
      "tk                        8.6.10               he774522_0    defaults\n",
      "torch                     2.3.1                    pypi_0    pypi\n",
      "torchaudio                0.7.2                      py38    pytorch\n",
      "torchvision               0.18.1                   pypi_0    pypi\n",
      "tornado                   6.1              py38h2bbff1b_0    defaults\n",
      "tqdm                      4.66.4                   pypi_0    pypi\n",
      "traitlets                 4.3.3            py38haa95532_0    defaults\n",
      "typing-extensions         4.12.2                   pypi_0    pypi\n",
      "ultralytics               8.2.48                   pypi_0    pypi\n",
      "ultralytics-thop          2.0.0                    pypi_0    pypi\n",
      "urllib3                   1.26.19                  pypi_0    pypi\n",
      "vc                        14.2                 h21ff451_1    defaults\n",
      "vs2015_runtime            14.27.29016          h5e58377_2    defaults\n",
      "wandb                     0.15.12                  pypi_0    pypi\n",
      "wcwidth                   0.2.5                      py_0    defaults\n",
      "webencodings              0.5.1                    py38_1    defaults\n",
      "websocket-client          1.3.1                    pypi_0    pypi\n",
      "werkzeug                  2.0.1                    pypi_0    pypi\n",
      "wheel                     0.36.2             pyhd3eb1b0_0    defaults\n",
      "widgetsnbextension        3.5.1                    pypi_0    pypi\n",
      "wincertstore              0.2              py38haa95532_2    defaults\n",
      "winpty                    0.4.3                         4    defaults\n",
      "xlrd                      2.0.1              pyhd3eb1b0_0    defaults\n",
      "xz                        5.2.5                h62dcd97_0    defaults\n",
      "zeromq                    4.3.3                ha925a31_3    defaults\n",
      "zipp                      3.4.1              pyhd3eb1b0_0    defaults\n",
      "zlib                      1.2.11               h62dcd97_4    defaults\n",
      "zstd                      1.4.9                h19a0ad4_0    defaults\n"
     ]
    }
   ],
   "source": [
    "!conda list"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一次安装好 [Anaconda](http://www.continuum.io/downloads) 以后，可以在命令行输入以下命令使 [Anaconda](http://www.continuum.io/downloads) 保持最新：\n",
    "\n",
    "    conda update conda\n",
    "    conda update anaconda\n",
    "\n",
    "conda 是一种很强大的工具，具体用法可以参照它的[文档](http://conda.pydata.org/docs/)。\n",
    "\n",
    "也可以参考它的 [cheat sheet](http://conda.pydata.org/docs/_downloads/conda-cheatsheet.pdf) 来快速查看它的用法。\n",
    "\n",
    "可以使用它来安装，更新，卸载第三方的 **python** 工具包：\n",
    "\n",
    "    conda install <some package>\n",
    "    conda update <some package>\n",
    "    conda remove <some package>\n",
    "\n",
    "在安装或更新时可以指定安装的版本号，例如需要使用 `numpy 1.8.1`：\n",
    "\n",
    "    conda install numpy=1.8.1\n",
    "    conda update numpy=1.8.1\n",
    "\n",
    "查看 `conda` 的信息：\n",
    "\n",
    "    conda info"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "     active environment : py_36\n",
      "    active env location : C:\\Users\\root\\anaconda3\\envs\\py_36\n",
      "            shell level : 2\n",
      "       user config file : C:\\Users\\root\\.condarc\n",
      " populated config files : C:\\Users\\root\\.condarc\n",
      "          conda version : 24.11.3\n",
      "    conda-build version : 24.1.2\n",
      "         python version : 3.11.7.final.0\n",
      "                 solver : libmamba (default)\n",
      "       virtual packages : __archspec=1=skylake\n",
      "                          __conda=24.11.3=0\n",
      "                          __cuda=12.6=0\n",
      "                          __win=0=0\n",
      "       base environment : C:\\Users\\root\\anaconda3  (writable)\n",
      "      conda av data dir : C:\\Users\\root\\anaconda3\\etc\\conda\n",
      "  conda av metadata url : None\n",
      "           channel URLs : https://repo.anaconda.com/pkgs/main/win-64\n",
      "                          https://repo.anaconda.com/pkgs/main/noarch\n",
      "                          https://repo.anaconda.com/pkgs/r/win-64\n",
      "                          https://repo.anaconda.com/pkgs/r/noarch\n",
      "                          https://repo.anaconda.com/pkgs/msys2/win-64\n",
      "                          https://repo.anaconda.com/pkgs/msys2/noarch\n",
      "                          https://conda.anaconda.org/conda-forge/win-64\n",
      "                          https://conda.anaconda.org/conda-forge/noarch\n",
      "          package cache : C:\\Users\\root\\anaconda3\\pkgs\n",
      "                          C:\\Users\\root\\.conda\\pkgs\n",
      "                          C:\\Users\\root\\AppData\\Local\\conda\\conda\\pkgs\n",
      "       envs directories : C:\\Users\\root\\anaconda3\\envs\n",
      "                          C:\\Users\\root\\.conda\\envs\n",
      "                          C:\\Users\\root\\AppData\\Local\\conda\\conda\\envs\n",
      "               platform : win-64\n",
      "             user-agent : conda/24.11.3 requests/2.31.0 CPython/3.11.7 Windows/10 Windows/10.0.19045 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.6 aau/0.4.3 c/_aIUD6VIf3niRBA9UCUBkQ s/dcsaQF-QbU1Mynw9IAKSGw e/Rb2t_RWcnwWw900KZVCmHQ\n",
      "          administrator : False\n",
      "             netrc file : C:\\Users\\root/.netrc\n",
      "           offline mode : False\n",
      "\n"
     ]
    }
   ],
   "source": [
    "!conda info"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "一个很棒的功能是 `conda` 可以产生一个自定义的环境，假设在安装的是 **Python 2.7** 的情况下，想使用 **Python 3.4**，只需要在命令行下使用 `conda` 产生一个新的环境：\n",
    "\n",
    "    conda create -n py34 python=3.4\n",
    "\n",
    "这里这个环境被命名为 `py34` ，可以根据喜好将 `py34` 改成其他的名字。\n",
    "\n",
    "使用这个环境时，只需要命令行下输入：\n",
    "\n",
    "``` python\n",
    "activate py34 #(windows)\n",
    "source activate py34 #(linux, mac)\n",
    "```\n",
    "\n",
    "此时，我们的 **Python** 版本便是 **`python 3.4`**了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## spyder 编辑器"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`Anaconda` 默认使用的编辑器是 `spyder`，可以在命令行下输入：\n",
    "\n",
    "    spyder\n",
    "\n",
    "来进入这个编辑器，具体使用方法不做介绍。"
   ]
  }
 ],
 "metadata": {
  "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.8.0"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
