0838-通過Anaconda部署python3環境

1.Parcel方式



1.1 官方Parcel

參考https://docs.anaconda.com/anaconda-scale/cloudera-cdh/

免費的parcel提供的是python2,需要自己安裝python3的虛擬環境

parcel下載地址爲 https://repo.continuum.io/pkgs/misc/parcels/

注意anaconda不需要csd文件


1.1.1 創建python3環境

在線安裝下conda創建並激活python3環境的命令如下,可以按照需要創建需要的python版本

需要注意的是某些版本的spark不支持Python 3.6,需要安裝python3.5,參照SPARK-19019 https://issues.apache.org/jira/browse/SPARK-19019

# --offline離線模式,
# -n 爲環境的名稱
# —unknown爲安裝沒有依賴的python包,如果有依賴使用conda install會報錯,需要搭建一個內部倉庫。
conda create -n py3 python=3.5
source activate py3

離線安裝下參照在線安裝一個python3的環境,將該環境直接拷貝至離線機器的相同目錄即可。


1.2 自定義Parcel

參考Python環境,在https://repo.anaconda.com/archive/下載需要的版本,安裝後目錄結構如下


在該目錄中建立meta文件夾

在meta文件夾中創建conda_env.sh文件,內容如下

#!/bin/bash

if [ -z "${CDH_PYTHON}" ]; then
    export CDH_PYTHON=${PARCELS_ROOT}/${PARCEL_DIRNAME}/bin/python
fi


在meta文件夾中創建parcel.json文件,內容需要使用一段代碼生成,代碼如下,

這裏的name和之後步驟中創建的文件夾有嚴格對應要求,否則打包parcel和分發時會出錯

sample.json爲官方提供的anaconda2的parcel.json,內容如下

{
  "components": [
    {
      "name""Anaconda"
      "pkg_version""2019.10"
      "version""2019.10"
    }
  ], 
  "extraVersionInfo": {
    "baseVersion""2019.10"
    "fullVersion""2019.10-el6"
    "patchCount""p0"
  }, 
  "groups": [], 
  "name""Anaconda"
  "packages": [
    {
      "name""_ipyw_jlab_nb_ext_conf"
      "version""0.1.0-py27_0"
    }, 
    {
      "name""_libgcc_mutex"
      "version""0.1-main"
    }, 
    {
      "name""alabaster"
      "version""0.7.12-py27_0"
    }, 
    {
      "name""anaconda"
      "version""2019.10-py27_0"
    }, 
    {
      "name""anaconda-client"
      "version""1.7.2-py27_0"
    }, 
    {
      "name""anaconda-navigator"
      "version""1.9.7-py27_0"
    }, 
    {
      "name""anaconda-project"
      "version""0.8.3-py_0"
    }, 
    {
      "name""asn1crypto"
      "version""1.0.1-py27_0"
    }, 
    {
      "name""astroid"
      "version""1.6.5-py27_0"
    }, 
    {
      "name""astropy"
      "version""2.0.9-py27hdd07704_0"
    }, 
    {
      "name""atomicwrites"
      "version""1.3.0-py27_1"
    }, 
    {
      "name""attrs"
      "version""19.2.0-py_0"
    }, 
    {
      "name""babel"
      "version""2.7.0-py_0"
    }, 
    {
      "name""backports"
      "version""1.0-py_2"
    }, 
    {
      "name""backports.functools_lru_cache"
      "version""1.5-py_2"
    }, 
    {
      "name""backports.os"
      "version""0.1.1-py27_0"
    }, 
    {
      "name""backports.shutil_get_terminal_size"
      "version""1.0.0-py27_2"
    }, 
    {
      "name""backports.tempfile"
      "version""1.0-py_1"
    }, 
    {
      "name""backports.weakref"
      "version""1.0.post1-py_1"
    }, 
    {
      "name""backports_abc"
      "version""0.5-py27_0"
    }, 
    {
      "name""beautifulsoup4"
      "version""4.8.0-py27_0"
    }, 
    {
      "name""bitarray"
      "version""1.0.1-py27h7b6447c_0"
    }, 
    {
      "name""bkcharts"
      "version""0.2-py27_0"
    }, 
    {
      "name""blas"
      "version""1.0-mkl"
    }, 
    {
      "name""bleach"
      "version""3.1.0-py27_0"
    }, 
    {
      "name""blosc"
      "version""1.16.3-hd408876_0"
    }, 
    {
      "name""bokeh"
      "version""1.3.4-py27_0"
    }, 
    {
      "name""boto"
      "version""2.49.0-py27_0"
    }, 
    {
      "name""bottleneck"
      "version""1.2.1-py27h035aef0_1"
    }, 
    {
      "name""bzip2"
      "version""1.0.8-h7b6447c_0"
    }, 
    {
      "name""ca-certificates"
      "version""2019.8.28-0"
    }, 
    {
      "name""cairo"
      "version""1.14.12-h8948797_3"
    }, 
    {
      "name""cdecimal"
      "version""2.3-py27h14c3975_3"
    }, 
    {
      "name""certifi"
      "version""2019.9.11-py27_0"
    }, 
    {
      "name""cffi"
      "version""1.12.3-py27h2e261b9_0"
    }, 
    {
      "name""chardet"
      "version""3.0.4-py27_1003"
    }, 
    {
      "name""click"
      "version""7.0-py27_0"
    }, 
    {
      "name""cloudpickle"
      "version""1.2.2-py_0"
    }, 
    {
      "name""clyent"
      "version""1.2.2-py27_1"
    }, 
    {
      "name""colorama"
      "version""0.4.1-py27_0"
    }, 
    {
      "name""conda"
      "version""4.7.12-py27_0"
    }, 
    {
      "name""conda-build"
      "version""3.18.9-py27_3"
    }, 
    {
      "name""conda-env"
      "version""2.6.0-1"
    }, 
    {
      "name""conda-package-handling"
      "version""1.6.0-py27h7b6447c_0"
    }, 
    {
      "name""conda-verify"
      "version""3.4.2-py_1"
    }, 
    {
      "name""configparser"
      "version""4.0.2-py27_0"
    }, 
    {
      "name""contextlib2"
      "version""0.6.0-py_0"
    }, 
    {
      "name""cryptography"
      "version""2.7-py27h1ba5d50_0"
    }, 
    {
      "name""curl"
      "version""7.65.3-hbc83047_0"
    }, 
    {
      "name""cycler"
      "version""0.10.0-py27_0"
    }, 
    {
      "name""cython"
      "version""0.29.13-py27he6710b0_0"
    }, 
    {
      "name""cytoolz"
      "version""0.10.0-py27h7b6447c_0"
    }, 
    {
      "name""dask"
      "version""1.2.2-py_0"
    }, 
    {
      "name""dask-core"
      "version""1.2.2-py_0"
    }, 
    {
      "name""dbus"
      "version""1.13.6-h746ee38_0"
    }, 
    {
      "name""decorator"
      "version""4.4.0-py27_1"
    }, 
    {
      "name""defusedxml"
      "version""0.6.0-py_0"
    }, 
    {
      "name""distributed"
      "version""1.28.1-py27_0"
    }, 
    {
      "name""docutils"
      "version""0.15.2-py27_0"
    }, 
    {
      "name""entrypoints"
      "version""0.3-py27_0"
    }, 
    {
      "name""enum34"
      "version""1.1.6-py27_1"
    }, 
    {
      "name""et_xmlfile"
      "version""1.0.1-py27_0"
    }, 
    {
      "name""expat"
      "version""2.2.6-he6710b0_0"
    }, 
    {
      "name""fastcache"
      "version""1.1.0-py27h7b6447c_0"
    }, 
    {
      "name""filelock"
      "version""3.0.12-py_0"
    }, 
    {
      "name""flask"
      "version""1.1.1-py_0"
    }, 
    {
      "name""fontconfig"
      "version""2.13.0-h9420a91_0"
    }, 
    {
      "name""freetype"
      "version""2.9.1-h8a8886c_1"
    }, 
    {
      "name""fribidi"
      "version""1.0.5-h7b6447c_0"
    }, 
    {
      "name""funcsigs"
      "version""1.0.2-py27_0"
    }, 
    {
      "name""functools32"
      "version""3.2.3.2-py27_1"
    }, 
    {
      "name""future"
      "version""0.17.1-py27_0"
    }, 
    {
      "name""futures"
      "version""3.3.0-py27_0"
    }, 
    {
      "name""get_terminal_size"
      "version""1.0.0-haa9412d_0"
    }, 
    {
      "name""gevent"
      "version""1.4.0-py27h7b6447c_0"
    }, 
    {
      "name""glib"
      "version""2.56.2-hd408876_0"
    }, 
    {
      "name""glob2"
      "version""0.7-py_0"
    }, 
    {
      "name""gmp"
      "version""6.1.2-h6c8ec71_1"
    }, 
    {
      "name""gmpy2"
      "version""2.0.8-py27h10f8cd9_2"
    }, 
    {
      "name""graphite2"
      "version""1.3.13-h23475e2_0"
    }, 
    {
      "name""greenlet"
      "version""0.4.15-py27h7b6447c_0"
    }, 
    {
      "name""grin"
      "version""1.2.1-py27_4"
    }, 
    {
      "name""gst-plugins-base"
      "version""1.14.0-hbbd80ab_1"
    }, 
    {
      "name""gstreamer"
      "version""1.14.0-hb453b48_1"
    }, 
    {
      "name""h5py"
      "version""2.9.0-py27h7918eee_0"
    }, 
    {
      "name""harfbuzz"
      "version""1.8.8-hffaf4a1_0"
    }, 
    {
      "name""hdf5"
      "version""1.10.4-hb1b8bf9_0"
    }, 
    {
      "name""heapdict"
      "version""1.0.1-py_0"
    }, 
    {
      "name""html5lib"
      "version""1.0.1-py27_0"
    }, 
    {
      "name""icu"
      "version""58.2-h9c2bf20_1"
    }, 
    {
      "name""idna"
      "version""2.8-py27_0"
    }, 
    {
      "name""imageio"
      "version""2.6.0-py27_0"
    }, 
    {
      "name""imagesize"
      "version""1.1.0-py27_0"
    }, 
    {
      "name""importlib_metadata"
      "version""0.23-py27_0"
    }, 
    {
      "name""intel-openmp"
      "version""2019.4-243"
    }, 
    {
      "name""ipaddress"
      "version""1.0.22-py27_0"
    }, 
    {
      "name""ipykernel"
      "version""4.10.0-py27_0"
    }, 
    {
      "name""ipython"
      "version""5.8.0-py27_0"
    }, 
    {
      "name""ipython_genutils"
      "version""0.2.0-py27_0"
    }, 
    {
      "name""ipywidgets"
      "version""7.5.1-py_0"
    }, 
    {
      "name""isort"
      "version""4.3.21-py27_0"
    }, 
    {
      "name""itsdangerous"
      "version""1.1.0-py27_0"
    }, 
    {
      "name""jbig"
      "version""2.1-hdba287a_0"
    }, 
    {
      "name""jdcal"
      "version""1.4.1-py_0"
    }, 
    {
      "name""jedi"
      "version""0.15.1-py27_0"
    }, 
    {
      "name""jinja2"
      "version""2.10.3-py_0"
    }, 
    {
      "name""jpeg"
      "version""9b-h024ee3a_2"
    }, 
    {
      "name""jsonschema"
      "version""3.0.2-py27_0"
    }, 
    {
      "name""jupyter"
      "version""1.0.0-py27_7"
    }, 
    {
      "name""jupyter_client"
      "version""5.3.3-py27_1"
    }, 
    {
      "name""jupyter_console"
      "version""5.2.0-py27_1"
    }, 
    {
      "name""jupyter_core"
      "version""4.5.0-py_0"
    }, 
    {
      "name""jupyterlab"
      "version""0.33.11-py27_0"
    }, 
    {
      "name""jupyterlab_launcher"
      "version""0.11.2-py27h28b3542_0"
    }, 
    {
      "name""kiwisolver"
      "version""1.1.0-py27he6710b0_0"
    }, 
    {
      "name""krb5"
      "version""1.16.1-h173b8e3_7"
    }, 
    {
      "name""lazy-object-proxy"
      "version""1.4.2-py27h7b6447c_0"
    }, 
    {
      "name""libarchive"
      "version""3.3.3-h5d8350f_5"
    }, 
    {
      "name""libcurl"
      "version""7.65.3-h20c2e04_0"
    }, 
    {
      "name""libedit"
      "version""3.1.20181209-hc058e9b_0"
    }, 
    {
      "name""libffi"
      "version""3.2.1-hd88cf55_4"
    }, 
    {
      "name""libgcc-ng"
      "version""9.1.0-hdf63c60_0"
    }, 
    {
      "name""libgfortran-ng"
      "version""7.3.0-hdf63c60_0"
    }, 
    {
      "name""liblief"
      "version""0.9.0-h7725739_2"
    }, 
    {
      "name""libpng"
      "version""1.6.37-hbc83047_0"
    }, 
    {
      "name""libsodium"
      "version""1.0.16-h1bed415_0"
    }, 
    {
      "name""libssh2"
      "version""1.8.2-h1ba5d50_0"
    }, 
    {
      "name""libstdcxx-ng"
      "version""9.1.0-hdf63c60_0"
    }, 
    {
      "name""libtiff"
      "version""4.0.10-h2733197_2"
    }, 
    {
      "name""libtool"
      "version""2.4.6-h7b6447c_5"
    }, 
    {
      "name""libuuid"
      "version""1.0.3-h1bed415_2"
    }, 
    {
      "name""libxcb"
      "version""1.13-h1bed415_1"
    }, 
    {
      "name""libxml2"
      "version""2.9.9-hea5a465_1"
    }, 
    {
      "name""libxslt"
      "version""1.1.33-h7d1a2b0_0"
    }, 
    {
      "name""linecache2"
      "version""1.0.0-py27_0"
    }, 
    {
      "name""llvmlite"
      "version""0.29.0-py27hd408876_0"
    }, 
    {
      "name""locket"
      "version""0.2.0-py27_1"
    }, 
    {
      "name""lxml"
      "version""4.4.1-py27hefd8a0e_0"
    }, 
    {
      "name""lz4-c"
      "version""1.8.1.2-h14c3975_0"
    }, 
    {
      "name""lzo"
      "version""2.10-h49e0be7_2"
    }, 
    {
      "name""markupsafe"
      "version""1.1.1-py27h7b6447c_0"
    }, 
    {
      "name""matplotlib"
      "version""2.2.3-py27hb69df0a_0"
    }, 
    {
      "name""mccabe"
      "version""0.6.1-py27_1"
    }, 
    {
      "name""mistune"
      "version""0.8.4-py27h7b6447c_0"
    }, 
    {
      "name""mkl"
      "version""2019.4-243"
    }, 
    {
      "name""mkl-service"
      "version""2.3.0-py27he904b0f_0"
    }, 
    {
      "name""mkl_fft"
      "version""1.0.14-py27ha843d7b_0"
    }, 
    {
      "name""mkl_random"
      "version""1.1.0-py27hd6b4f25_0"
    }, 
    {
      "name""mock"
      "version""3.0.5-py27_0"
    }, 
    {
      "name""more-itertools"
      "version""5.0.0-py27_0"
    }, 
    {
      "name""mpc"
      "version""1.1.0-h10f8cd9_1"
    }, 
    {
      "name""mpfr"
      "version""4.0.1-hdf1c602_3"
    }, 
    {
      "name""mpmath"
      "version""1.1.0-py27_0"
    }, 
    {
      "name""msgpack-python"
      "version""0.6.1-py27hfd86e86_1"
    }, 
    {
      "name""multipledispatch"
      "version""0.6.0-py27_0"
    }, 
    {
      "name""navigator-updater"
      "version""0.2.1-py27_0"
    }, 
    {
      "name""nbconvert"
      "version""5.6.0-py27_1"
    }, 
    {
      "name""nbformat"
      "version""4.4.0-py27_0"
    }, 
    {
      "name""ncurses"
      "version""6.1-he6710b0_1"
    }, 
    {
      "name""networkx"
      "version""2.2-py27_1"
    }, 
    {
      "name""nltk"
      "version""3.4.5-py27_0"
    }, 
    {
      "name""nose"
      "version""1.3.7-py27_2"
    }, 
    {
      "name""notebook"
      "version""5.7.8-py27_0"
    }, 
    {
      "name""numba"
      "version""0.45.1-py27h962f231_0"
    }, 
    {
      "name""numexpr"
      "version""2.7.0-py27h9e4a6bb_0"
    }, 
    {
      "name""numpy"
      "version""1.16.5-py27h7e9f1db_0"
    }, 
    {
      "name""numpy-base"
      "version""1.16.5-py27hde5b4d6_0"
    }, 
    {
      "name""numpydoc"
      "version""0.9.1-py_0"
    }, 
    {
      "name""olefile"
      "version""0.46-py27_0"
    }, 
    {
      "name""openpyxl"
      "version""2.6.3-py_0"
    }, 
    {
      "name""openssl"
      "version""1.1.1d-h7b6447c_2"
    }, 
    {
      "name""packaging"
      "version""19.2-py_0"
    }, 
    {
      "name""pandas"
      "version""0.24.2-py27he6710b0_0"
    }, 
    {
      "name""pandoc"
      "version""2.2.3.2-0"
    }, 
    {
      "name""pandocfilters"
      "version""1.4.2-py27_1"
    }, 
    {
      "name""pango"
      "version""1.42.4-h049681c_0"
    }, 
    {
      "name""parso"
      "version""0.5.1-py_0"
    }, 
    {
      "name""partd"
      "version""1.0.0-py_0"
    }, 
    {
      "name""patchelf"
      "version""0.9-he6710b0_3"
    }, 
    {
      "name""path.py"
      "version""11.5.0-py27_0"
    }, 
    {
      "name""pathlib2"
      "version""2.3.5-py27_0"
    }, 
    {
      "name""patsy"
      "version""0.5.1-py27_0"
    }, 
    {
      "name""pcre"
      "version""8.43-he6710b0_0"
    }, 
    {
      "name""pep8"
      "version""1.7.1-py27_0"
    }, 
    {
      "name""pexpect"
      "version""4.7.0-py27_0"
    }, 
    {
      "name""pickleshare"
      "version""0.7.5-py27_0"
    }, 
    {
      "name""pillow"
      "version""6.2.0-py27h34e0f95_0"
    }, 
    {
      "name""pip"
      "version""19.2.3-py27_0"
    }, 
    {
      "name""pixman"
      "version""0.38.0-h7b6447c_0"
    }, 
    {
      "name""pkginfo"
      "version""1.5.0.1-py27_0"
    }, 
    {
      "name""pluggy"
      "version""0.13.0-py27_0"
    }, 
    {
      "name""ply"
      "version""3.11-py27_0"
    }, 
    {
      "name""prometheus_client"
      "version""0.7.1-py_0"
    }, 
    {
      "name""prompt_toolkit"
      "version""1.0.15-py27_0"
    }, 
    {
      "name""psutil"
      "version""5.6.3-py27h7b6447c_0"
    }, 
    {
      "name""ptyprocess"
      "version""0.6.0-py27_0"
    }, 
    {
      "name""py"
      "version""1.8.0-py27_0"
    }, 
    {
      "name""py-lief"
      "version""0.9.0-py27h7725739_2"
    }, 
    {
      "name""pycairo"
      "version""1.18.1-py27h2a1e443_0"
    }, 
    {
      "name""pycodestyle"
      "version""2.5.0-py27_0"
    }, 
    {
      "name""pycosat"
      "version""0.6.3-py27h14c3975_0"
    }, 
    {
      "name""pycparser"
      "version""2.19-py27_0"
    }, 
    {
      "name""pycrypto"
      "version""2.6.1-py27h14c3975_9"
    }, 
    {
      "name""pycurl"
      "version""7.43.0.3-py27h1ba5d50_0"
    }, 
    {
      "name""pyflakes"
      "version""2.1.1-py27_0"
    }, 
    {
      "name""pygments"
      "version""2.4.2-py_0"
    }, 
    {
      "name""pylint"
      "version""1.9.2-py27_0"
    }, 
    {
      "name""pyodbc"
      "version""4.0.27-py27he6710b0_0"
    }, 
    {
      "name""pyopenssl"
      "version""19.0.0-py27_0"
    }, 
    {
      "name""pyparsing"
      "version""2.4.2-py_0"
    }, 
    {
      "name""pyqt"
      "version""5.9.2-py27h05f1152_2"
    }, 
    {
      "name""pyrsistent"
      "version""0.15.4-py27h7b6447c_0"
    }, 
    {
      "name""pysocks"
      "version""1.7.1-py27_0"
    }, 
    {
      "name""pytables"
      "version""3.5.2-py27h71ec239_1"
    }, 
    {
      "name""pytest"
      "version""4.6.2-py27_0"
    }, 
    {
      "name""python"
      "version""2.7.16-h9bab390_7"
    }, 
    {
      "name""python-dateutil"
      "version""2.8.0-py27_0"
    }, 
    {
      "name""python-libarchive-c"
      "version""2.8-py27_13"
    }, 
    {
      "name""pytz"
      "version""2019.3-py_0"
    }, 
    {
      "name""pywavelets"
      "version""1.0.3-py27hdd07704_1"
    }, 
    {
      "name""pyyaml"
      "version""5.1.2-py27h7b6447c_0"
    }, 
    {
      "name""pyzmq"
      "version""18.1.0-py27he6710b0_0"
    }, 
    {
      "name""qt"
      "version""5.9.7-h5867ecd_1"
    }, 
    {
      "name""qtawesome"
      "version""0.6.0-py_0"
    }, 
    {
      "name""qtconsole"
      "version""4.5.5-py_0"
    }, 
    {
      "name""qtpy"
      "version""1.9.0-py_0"
    }, 
    {
      "name""readline"
      "version""7.0-h7b6447c_5"
    }, 
    {
      "name""requests"
      "version""2.22.0-py27_0"
    }, 
    {
      "name""ripgrep"
      "version""0.10.0-hc07d326_0"
    }, 
    {
      "name""rope"
      "version""0.14.0-py_0"
    }, 
    {
      "name""ruamel_yaml"
      "version""0.15.46-py27h14c3975_0"
    }, 
    {
      "name""scandir"
      "version""1.10.0-py27h7b6447c_0"
    }, 
    {
      "name""scikit-image"
      "version""0.14.2-py27he6710b0_0"
    }, 
    {
      "name""scikit-learn"
      "version""0.20.3-py27hd81dba3_0"
    }, 
    {
      "name""scipy"
      "version""1.2.1-py27h7c811a0_0"
    }, 
    {
      "name""seaborn"
      "version""0.9.0-py27_0"
    }, 
    {
      "name""send2trash"
      "version""1.5.0-py27_0"
    }, 
    {
      "name""setuptools"
      "version""41.4.0-py27_0"
    }, 
    {
      "name""simplegeneric"
      "version""0.8.1-py27_2"
    }, 
    {
      "name""singledispatch"
      "version""3.4.0.3-py27_0"
    }, 
    {
      "name""sip"
      "version""4.19.8-py27hf484d3e_0"
    }, 
    {
      "name""six"
      "version""1.12.0-py27_0"
    }, 
    {
      "name""snappy"
      "version""1.1.7-hbae5bb6_3"
    }, 
    {
      "name""snowballstemmer"
      "version""2.0.0-py_0"
    }, 
    {
      "name""sortedcollections"
      "version""1.1.2-py27_0"
    }, 
    {
      "name""sortedcontainers"
      "version""2.1.0-py27_0"
    }, 
    {
      "name""soupsieve"
      "version""1.9.3-py27_0"
    }, 
    {
      "name""sphinx"
      "version""1.8.5-py27_0"
    }, 
    {
      "name""sphinxcontrib"
      "version""1.0-py27_1"
    }, 
    {
      "name""sphinxcontrib-websupport"
      "version""1.1.2-py_0"
    }, 
    {
      "name""spyder"
      "version""3.3.6-py27_0"
    }, 
    {
      "name""spyder-kernels"
      "version""0.5.2-py27_0"
    }, 
    {
      "name""sqlalchemy"
      "version""1.3.9-py27h7b6447c_0"
    }, 
    {
      "name""sqlite"
      "version""3.30.0-h7b6447c_0"
    }, 
    {
      "name""ssl_match_hostname"
      "version""3.7.0.1-py27_0"
    }, 
    {
      "name""statsmodels"
      "version""0.10.1-py27hdd07704_0"
    }, 
    {
      "name""subprocess32"
      "version""3.5.4-py27h7b6447c_0"
    }, 
    {
      "name""sympy"
      "version""1.4-py27_0"
    }, 
    {
      "name""tbb"
      "version""2019.4-hfd86e86_0"
    }, 
    {
      "name""tblib"
      "version""1.4.0-py_0"
    }, 
    {
      "name""terminado"
      "version""0.8.2-py27_0"
    }, 
    {
      "name""testpath"
      "version""0.4.2-py27_0"
    }, 
    {
      "name""tk"
      "version""8.6.8-hbc83047_0"
    }, 
    {
      "name""toolz"
      "version""0.10.0-py_0"
    }, 
    {
      "name""tornado"
      "version""5.1.1-py27h7b6447c_0"
    }, 
    {
      "name""tqdm"
      "version""4.36.1-py_0"
    }, 
    {
      "name""traceback2"
      "version""1.4.0-py27_0"
    }, 
    {
      "name""traitlets"
      "version""4.3.3-py27_0"
    }, 
    {
      "name""typing"
      "version""3.7.4.1-py27_0"
    }, 
    {
      "name""unicodecsv"
      "version""0.14.1-py27_0"
    }, 
    {
      "name""unittest2"
      "version""1.1.0-py27_0"
    }, 
    {
      "name""unixodbc"
      "version""2.3.7-h14c3975_0"
    }, 
    {
      "name""urllib3"
      "version""1.24.2-py27_0"
    }, 
    {
      "name""wcwidth"
      "version""0.1.7-py27_0"
    }, 
    {
      "name""webencodings"
      "version""0.5.1-py27_1"
    }, 
    {
      "name""werkzeug"
      "version""0.16.0-py_0"
    }, 
    {
      "name""wheel"
      "version""0.33.6-py27_0"
    }, 
    {
      "name""widgetsnbextension"
      "version""3.5.1-py27_0"
    }, 
    {
      "name""wrapt"
      "version""1.11.2-py27h7b6447c_0"
    }, 
    {
      "name""wurlitzer"
      "version""1.0.3-py27_0"
    }, 
    {
      "name""xlrd"
      "version""1.2.0-py27_0"
    }, 
    {
      "name""xlsxwriter"
      "version""1.2.1-py_0"
    }, 
    {
      "name""xlwt"
      "version""1.3.0-py27_0"
    }, 
    {
      "name""xz"
      "version""5.2.4-h14c3975_4"
    }, 
    {
      "name""yaml"
      "version""0.1.7-had09818_2"
    }, 
    {
      "name""zeromq"
      "version""4.3.1-he6710b0_3"
    }, 
    {
      "name""zict"
      "version""1.0.0-py_0"
    }, 
    {
      "name""zipp"
      "version""0.6.0-py_0"
    }, 
    {
      "name""zlib"
      "version""1.2.11-h7b6447c_3"
    }, 
    {
      "name""zstd"
      "version""1.3.7-h0b5b093_0"
    }
  ], 
  "provides": [
    "spark-plugin"
  ], 
  "schema_version"1
  "scripts": {
    "defines""conda_env.sh"
  }, 
  "setActiveSymlink"true
  "users": {}, 
  "version""2019.10"
}


conda_path是指使用官方下載包安裝以後的地址

version是下載的版本

import os
import json
import re
conda_path = "/root/anaconda3/pkgs/"
#conda_path = "/opt/cloudera/parcels/Anaconda-2019.10/pkgs/"
version = "2020.07"

with open("sample.json") as f:
    sample = json.load(f)
    sample['components'][0]['name'] = "Anaconda3"
    sample['components'][0]['pkg_version'] = version
    sample['components'][0]['version'] = version
    sample['name'] = "Anaconda3"
    sample['extraVersionInfo']['baseVersion'] = version
    sample['extraVersionInfo']['fullVersion'] = version + "-el7"
    sample['version'] = version
    sample['packages'] = []
    package_list = os.listdir(conda_path)
    for item in sorted(package_list):
        tmpdict = {}
        if os.path.isdir(conda_path+item) and ('-' in item):
            result = re.search("(.*?)(-)(\d+.*)", item)
            tmpdict['name'] = result.group(1)
            tmpdict['version'] = result.group(3)
            sample['packages'].append(tmpdict)
    with open("parcel.json", "w") as resultfile:
        json.dump(sample, resultfile, indent=2, sort_keys=True)


生成的parcel.json文件如下

{
  "components": [
    {
      "name""Anaconda3"
      "pkg_version""2020.07"
      "version""2020.07"
    }
  ], 
  "extraVersionInfo": {
    "baseVersion""2020.07"
    "fullVersion""2020.07-el7"
    "patchCount""p0"
  }, 
  "groups": [], 
  "name""Anaconda3"
  "packages": [
    {
      "name""_ipyw_jlab_nb_ext_conf"
      "version""0.1.0-py38_0"
    }, 
    {
      "name""_ipyw_jlab_nb_ext_conf"
      "version""0.1.0-py38_0gb600ij_"
    }, 
    {
      "name""_libgcc_mutex"
      "version""0.1-main"
    }, 
    {
      "name""_libgcc_mutex"
      "version""0.1-maintdxjk7sg"
    }, 
    {
      "name""alabaster"
      "version""0.7.12-py_0"
    }, 
    {
      "name""alabaster"
      "version""0.7.12-py_0v6_vbf1i"
    }, 
    {
      "name""anaconda"
      "version""2020.07-py38_0"
    }, 
    {
      "name""anaconda-client"
      "version""1.7.2-py38_0"
    }, 
    {
      "name""anaconda-navigator"
      "version""1.9.12-py38_0"
    }, 
    {
      "name""anaconda-project"
      "version""0.8.4-py_0"
    }, 
    {
      "name""anaconda-project"
      "version""0.8.4-py_0_3d7v2sr"
    }, 
    {
      "name""argh"
      "version""0.26.2-py38_0"
    }, 
    {
      "name""asn1crypto"
      "version""1.3.0-py38_0"
    }, 
    {
      "name""asn1crypto"
      "version""1.3.0-py38_0xvvk2n17"
    }, 
    {
      "name""astroid"
      "version""2.4.2-py38_0"
    }, 
    {
      "name""astroid"
      "version""2.4.2-py38_0jmfq4qfx"
    }, 
    {
      "name""astropy"
      "version""4.0.1.post1-py38h7b6447c_1"
    }, 
    {
      "name""astropy"
      "version""4.0.1.post1-py38h7b6447c_1bkfxtpf_"
    }, 
    {
      "name""atomicwrites"
      "version""1.4.0-py_0"
    }, 
    {
      "name""attrs"
      "version""19.3.0-py_0"
    }, 
    {
      "name""attrs"
      "version""19.3.0-py_0_otbggg2"
    }, 
    {
      "name""attrs"
      "version""19.3.0-py_0o_p8vzbk"
    }, 
    {
      "name""autopep8"
      "version""1.5.3-py_0"
    }, 
    {
      "name""autopep8"
      "version""1.5.3-py_0p2c85chp"
    }, 
    {
      "name""babel"
      "version""2.8.0-py_0"
    }, 
    {
      "name""babel"
      "version""2.8.0-py_083x7cd0o"
    }, 
    {
      "name""babel"
      "version""2.8.0-py_0gmdtpa0h"
    }, 
    {
      "name""backcall"
      "version""0.2.0-py_0"
    }, 
    {
      "name""backcall"
      "version""0.2.0-py_01e3jm9s6"
    }, 
    {
      "name""backports"
      "version""1.0-py_2"
    }, 
    {
      "name""backports.functools_lru_cache"
      "version""1.6.1-py_0"
    }, 
    {
      "name""backports.functools_lru_cache"
      "version""1.6.1-py_00_sn6tch"
    }, 
    {
      "name""backports.shutil_get_terminal_size"
      "version""1.0.0-py38_2"
    }, 
    {
      "name""backports.shutil_get_terminal_size"
      "version""1.0.0-py38_2762n6c8v"
    }, 
    {
      "name""backports.tempfile"
      "version""1.0-py_1"
    }, 
    {
      "name""backports.tempfile"
      "version""1.0-py_1t72pjpjc"
    }, 
    {
      "name""backports.weakref"
      "version""1.0.post1-py_1"
    }, 
    {
      "name""backports.weakref"
      "version""1.0.post1-py_127bh4ded"
    }, 
    {
      "name""beautifulsoup4"
      "version""4.9.1-py38_0"
    }, 
    {
      "name""beautifulsoup4"
      "version""4.9.1-py38_0ecqvweqq"
    }, 
    {
      "name""bitarray"
      "version""1.4.0-py38h7b6447c_0"
    }, 
    {
      "name""bitarray"
      "version""1.4.0-py38h7b6447c_035qbte45"
    }, 
    {
      "name""bitarray"
      "version""1.4.0-py38h7b6447c_0b7gxwozp"
    }, 
    {
      "name""bkcharts"
      "version""0.2-py38_0"
    }, 
    {
      "name""blas"
      "version""1.0-mkl"
    }, 
    {
      "name""blas"
      "version""1.0-mklcgux7a8h"
    }, 
    {
      "name""bleach"
      "version""3.1.5-py_0"
    }, 
    {
      "name""blosc"
      "version""1.19.0-hd408876_0"
    }, 
    {
      "name""bokeh"
      "version""2.1.1-py38_0"
    }, 
    {
      "name""bokeh"
      "version""2.1.1-py38_0n_srh5gw"
    }, 
    {
      "name""boto"
      "version""2.49.0-py38_0"
    }, 
    {
      "name""bottleneck"
      "version""1.3.2-py38heb32a55_1"
    }, 
    {
      "name""brotlipy"
      "version""0.7.0-py38h7b6447c_1000"
    }, 
    {
      "name""bzip2"
      "version""1.0.8-h7b6447c_0"
    }, 
    {
      "name""bzip2"
      "version""1.0.8-h7b6447c_0cryflyu2"
    }, 
    {
      "name""ca-certificates"
      "version""2020.6.24-0"
    }, 
    {
      "name""ca-certificates"
      "version""2020.6.24-04ovdb2di"
    }, 
    {
      "name""ca-certificates"
      "version""2020.6.24-0m236bubr"
    }, 
    {
      "name""cairo"
      "version""1.14.12-h8948797_3"
    }, 
    {
      "name""cairo"
      "version""1.14.12-h8948797_33rssk5jr"
    }, 
    {
      "name""certifi"
      "version""2020.6.20-py38_0"
    }, 
    {
      "name""cffi"
      "version""1.14.0-py38he30daa8_1"
    }, 
    {
      "name""chardet"
      "version""3.0.4-py38_1003"
    }, 
    {
      "name""chardet"
      "version""3.0.4-py38_100328r6t396"
    }, 
    {
      "name""chardet"
      "version""3.0.4-py38_1003ycjjel8e"
    }, 
    {
      "name""click"
      "version""7.1.2-py_0"
    }, 
    {
      "name""cloudpickle"
      "version""1.5.0-py_0"
    }, 
    {
      "name""clyent"
      "version""1.2.2-py38_1"
    }, 
    {
      "name""clyent"
      "version""1.2.2-py38_1knw06ecv"
    }, 
    {
      "name""colorama"
      "version""0.4.3-py_0"
    }, 
    {
      "name""colorama"
      "version""0.4.3-py_0cxf05ei1"
    }, 
    {
      "name""colorama"
      "version""0.4.3-py_0qebr9avh"
    }, 
    {
      "name""conda"
      "version""4.8.3-py38_0"
    }, 
    {
      "name""conda-build"
      "version""3.18.11-py38_0"
    }, 
    {
      "name""conda-build"
      "version""3.18.11-py38_0ro4lf93f"
    }, 
    {
      "name""conda-env"
      "version""2.6.0-1"
    }, 
    {
      "name""conda-env"
      "version""2.6.0-1b7_9cxgm"
    }, 
    {
      "name""conda-package-handling"
      "version""1.6.1-py38h7b6447c_0"
    }, 
    {
      "name""conda-verify"
      "version""3.4.2-py_1"
    }, 
    {
      "name""conda-verify"
      "version""3.4.2-py_168vh4_yw"
    }, 
    {
      "name""conda-verify"
      "version""3.4.2-py_1zvlava34"
    }, 
    {
      "name""contextlib2"
      "version""0.6.0.post1-py_0"
    }, 
    {
      "name""contextlib2"
      "version""0.6.0.post1-py_0vlfjsge_"
    }, 
    {
      "name""cryptography"
      "version""2.9.2-py38h1ba5d50_0"
    }, 
    {
      "name""cryptography"
      "version""2.9.2-py38h1ba5d50_0tbn4m6fa"
    }, 
    {
      "name""curl"
      "version""7.71.1-hbc83047_1"
    }, 
    {
      "name""curl"
      "version""7.71.1-hbc83047_1ifj2nezs"
    }, 
    {
      "name""cycler"
      "version""0.10.0-py38_0"
    }, 
    {
      "name""cython"
      "version""0.29.21-py38he6710b0_0"
    }, 
    {
      "name""cytoolz"
      "version""0.10.1-py38h7b6447c_0"
    }, 
    {
      "name""cytoolz"
      "version""0.10.1-py38h7b6447c_0217tcsy1"
    }, 
    {
      "name""dask"
      "version""2.20.0-py_0"
    }, 
    {
      "name""dask-core"
      "version""2.20.0-py_0"
    }, 
    {
      "name""dask-core"
      "version""2.20.0-py_0n0bh1dae"
    }, 
    {
      "name""dbus"
      "version""1.13.16-hb2f20db_0"
    }, 
    {
      "name""decorator"
      "version""4.4.2-py_0"
    }, 
    {
      "name""decorator"
      "version""4.4.2-py_0ouf2wwb6"
    }, 
    {
      "name""defusedxml"
      "version""0.6.0-py_0"
    }, 
    {
      "name""diff-match-patch"
      "version""20200713-py_0"
    }, 
    {
      "name""diff-match-patch"
      "version""20200713-py_0f430cxbo"
    }, 
    {
      "name""diff-match-patch"
      "version""20200713-py_0jnldjppd"
    }, 
    {
      "name""distributed"
      "version""2.20.0-py38_0"
    }, 
    {
      "name""distributed"
      "version""2.20.0-py38_0u9uuqvgk"
    }, 
    {
      "name""docutils"
      "version""0.16-py38_1"
    }, 
    {
      "name""docutils"
      "version""0.16-py38_1ypbzlhse"
    }, 
    {
      "name""entrypoints"
      "version""0.3-py38_0"
    }, 
    {
      "name""et_xmlfile"
      "version""1.0.1-py_1001"
    }, 
    {
      "name""et_xmlfile"
      "version""1.0.1-py_10017jjpi6h7"
    }, 
    {
      "name""et_xmlfile"
      "version""1.0.1-py_1001wjgx4t5m"
    }, 
    {
      "name""expat"
      "version""2.2.9-he6710b0_2"
    }, 
    {
      "name""expat"
      "version""2.2.9-he6710b0_20xybrmfm"
    }, 
    {
      "name""expat"
      "version""2.2.9-he6710b0_2tigc4r0g"
    }, 
    {
      "name""fastcache"
      "version""1.1.0-py38h7b6447c_0"
    }, 
    {
      "name""fastcache"
      "version""1.1.0-py38h7b6447c_0ovqgfos0"
    }, 
    {
      "name""filelock"
      "version""3.0.12-py_0"
    }, 
    {
      "name""filelock"
      "version""3.0.12-py_0f1b9kab8"
    }, 
    {
      "name""flake8"
      "version""3.8.3-py_0"
    }, 
    {
      "name""flask"
      "version""1.1.2-py_0"
    }, 
    {
      "name""flask"
      "version""1.1.2-py_0doitd4fz"
    }, 
    {
      "name""fontconfig"
      "version""2.13.0-h9420a91_0"
    }, 
    {
      "name""fontconfig"
      "version""2.13.0-h9420a91_0ccglnmge"
    }, 
    {
      "name""freetype"
      "version""2.10.2-h5ab3b9f_0"
    }, 
    {
      "name""freetype"
      "version""2.10.2-h5ab3b9f_00h9x3gza"
    }, 
    {
      "name""freetype"
      "version""2.10.2-h5ab3b9f_0t5eq280p"
    }, 
    {
      "name""fribidi"
      "version""1.0.9-h7b6447c_0"
    }, 
    {
      "name""fsspec"
      "version""0.7.4-py_0"
    }, 
    {
      "name""future"
      "version""0.18.2-py38_1"
    }, 
    {
      "name""future"
      "version""0.18.2-py38_17dtg8msm"
    }, 
    {
      "name""get_terminal_size"
      "version""1.0.0-haa9412d_0"
    }, 
    {
      "name""get_terminal_size"
      "version""1.0.0-haa9412d_0x5w_6ogo"
    }, 
    {
      "name""gevent"
      "version""20.6.2-py38h7b6447c_0"
    }, 
    {
      "name""glib"
      "version""2.65.0-h3eb4bd4_0"
    }, 
    {
      "name""glob2"
      "version""0.7-py_0"
    }, 
    {
      "name""gmp"
      "version""6.1.2-h6c8ec71_1"
    }, 
    {
      "name""gmp"
      "version""6.1.2-h6c8ec71_15uh2j8kh"
    }, 
    {
      "name""gmp"
      "version""6.1.2-h6c8ec71_1xonxny1v"
    }, 
    {
      "name""gmpy2"
      "version""2.0.8-py38hd5f6e3b_3"
    }, 
    {
      "name""graphite2"
      "version""1.3.14-h23475e2_0"
    }, 
    {
      "name""graphite2"
      "version""1.3.14-h23475e2_0hq296mor"
    }, 
    {
      "name""greenlet"
      "version""0.4.16-py38h7b6447c_0"
    }, 
    {
      "name""gst-plugins-base"
      "version""1.14.0-hbbd80ab_1"
    }, 
    {
      "name""gst-plugins-base"
      "version""1.14.0-hbbd80ab_1va6apag3"
    }, 
    {
      "name""gstreamer"
      "version""1.14.0-hb31296c_0"
    }, 
    {
      "name""gstreamer"
      "version""1.14.0-hb31296c_0fv8c7q0a"
    }, 
    {
      "name""gstreamer"
      "version""1.14.0-hb31296c_0mbdpxvi7"
    }, 
    {
      "name""h5py"
      "version""2.10.0-py38h7918eee_0"
    }, 
    {
      "name""harfbuzz"
      "version""2.4.0-hca77d97_1"
    }, 
    {
      "name""hdf5"
      "version""1.10.4-hb1b8bf9_0"
    }, 
    {
      "name""hdf5"
      "version""1.10.4-hb1b8bf9_074g9y5cs"
    }, 
    {
      "name""heapdict"
      "version""1.0.1-py_0"
    }, 
    {
      "name""html5lib"
      "version""1.1-py_0"
    }, 
    {
      "name""icu"
      "version""58.2-he6710b0_3"
    }, 
    {
      "name""icu"
      "version""58.2-he6710b0_3frvwqqka"
    }, 
    {
      "name""idna"
      "version""2.10-py_0"
    }, 
    {
      "name""idna"
      "version""2.10-py_00phmuyik"
    }, 
    {
      "name""idna"
      "version""2.10-py_0iqbc38xu"
    }, 
    {
      "name""imageio"
      "version""2.9.0-py_0"
    }, 
    {
      "name""imagesize"
      "version""1.2.0-py_0"
    }, 
    {
      "name""imagesize"
      "version""1.2.0-py_0fjdo57ac"
    }, 
    {
      "name""imagesize"
      "version""1.2.0-py_0l0eh3bsp"
    }, 
    {
      "name""importlib-metadata"
      "version""1.7.0-py38_0"
    }, 
    {
      "name""importlib-metadata"
      "version""1.7.0-py38_0s5t6osd8"
    }, 
    {
      "name""importlib_metadata"
      "version""1.7.0-0"
    }, 
    {
      "name""importlib_metadata"
      "version""1.7.0-0g_26g8yv"
    }, 
    {
      "name""intel-openmp"
      "version""2020.1-217"
    }, 
    {
      "name""intel-openmp"
      "version""2020.1-217e_mztffd"
    }, 
    {
      "name""intervaltree"
      "version""3.0.2-py_1"
    }, 
    {
      "name""intervaltree"
      "version""3.0.2-py_1_hj7vllv"
    }, 
    {
      "name""ipykernel"
      "version""5.3.2-py38h5ca1d4c_0"
    }, 
    {
      "name""ipykernel"
      "version""5.3.2-py38h5ca1d4c_0slyiyrcf"
    }, 
    {
      "name""ipykernel"
      "version""5.3.2-py38h5ca1d4c_0v9060eaz"
    }, 
    {
      "name""ipython"
      "version""7.16.1-py38h5ca1d4c_0"
    }, 
    {
      "name""ipython_genutils"
      "version""0.2.0-py38_0"
    }, 
    {
      "name""ipywidgets"
      "version""7.5.1-py_0"
    }, 
    {
      "name""isort"
      "version""4.3.21-py38_0"
    }, 
    {
      "name""isort"
      "version""4.3.21-py38_0i6v_ixfa"
    }, 
    {
      "name""itsdangerous"
      "version""1.1.0-py_0"
    }, 
    {
      "name""itsdangerous"
      "version""1.1.0-py_05l2v3qd4"
    }, 
    {
      "name""jbig"
      "version""2.1-hdba287a_0"
    }, 
    {
      "name""jbig"
      "version""2.1-hdba287a_06kqn7g8b"
    }, 
    {
      "name""jbig"
      "version""2.1-hdba287a_09pw34n4r"
    }, 
    {
      "name""jdcal"
      "version""1.4.1-py_0"
    }, 
    {
      "name""jdcal"
      "version""1.4.1-py_0qg7btk2h"
    }, 
    {
      "name""jedi"
      "version""0.17.1-py38_0"
    }, 
    {
      "name""jeepney"
      "version""0.4.3-py_0"
    }, 
    {
      "name""jinja2"
      "version""2.11.2-py_0"
    }, 
    {
      "name""jinja2"
      "version""2.11.2-py_0o04knpml"
    }, 
    {
      "name""joblib"
      "version""0.16.0-py_0"
    }, 
    {
      "name""joblib"
      "version""0.16.0-py_0fgwe3xf0"
    }, 
    {
      "name""jpeg"
      "version""9b-h024ee3a_2"
    }, 
    {
      "name""jpeg"
      "version""9b-h024ee3a_210ezrgxo"
    }, 
    {
      "name""jpeg"
      "version""9b-h024ee3a_21dtrpy4i"
    }, 
    {
      "name""json5"
      "version""0.9.5-py_0"
    }, 
    {
      "name""jsonschema"
      "version""3.2.0-py38_0"
    }, 
    {
      "name""jsonschema"
      "version""3.2.0-py38_066jddynw"
    }, 
    {
      "name""jupyter"
      "version""1.0.0-py38_7"
    }, 
    {
      "name""jupyter"
      "version""1.0.0-py38_7go5hlyp_"
    }, 
    {
      "name""jupyter"
      "version""1.0.0-py38_7k0t3awxe"
    }, 
    {
      "name""jupyter_client"
      "version""6.1.6-py_0"
    }, 
    {
      "name""jupyter_console"
      "version""6.1.0-py_0"
    }, 
    {
      "name""jupyter_console"
      "version""6.1.0-py_0se5479ds"
    }, 
    {
      "name""jupyter_core"
      "version""4.6.3-py38_0"
    }, 
    {
      "name""jupyterlab"
      "version""2.1.5-py_0"
    }, 
    {
      "name""jupyterlab_server"
      "version""1.2.0-py_0"
    }, 
    {
      "name""keyring"
      "version""21.2.1-py38_0"
    }, 
    {
      "name""kiwisolver"
      "version""1.2.0-py38hfd86e86_0"
    }, 
    {
      "name""krb5"
      "version""1.18.2-h173b8e3_0"
    }, 
    {
      "name""lazy-object-proxy"
      "version""1.4.3-py38h7b6447c_0"
    }, 
    {
      "name""lcms2"
      "version""2.11-h396b838_0"
    }, 
    {
      "name""ld_impl_linux"
      "version""64-2.33.1-h53a641e_7"
    }, 
    {
      "name""ld_impl_linux"
      "version""64-2.33.1-h53a641e_74rn07g28"
    }, 
    {
      "name""libarchive"
      "version""3.4.2-h62408e4_0"
    }, 
    {
      "name""libcurl"
      "version""7.71.1-h20c2e04_1"
    }, 
    {
      "name""libedit"
      "version""3.1.20191231-h14c3975_1"
    }, 
    {
      "name""libffi"
      "version""3.3-he6710b0_2"
    }, 
    {
      "name""libffi"
      "version""3.3-he6710b0_2i15unjfu"
    }, 
    {
      "name""libgcc-ng"
      "version""9.1.0-hdf63c60_0"
    }, 
    {
      "name""libgcc-ng"
      "version""9.1.0-hdf63c60_056i84aug"
    }, 
    {
      "name""libgfortran-ng"
      "version""7.3.0-hdf63c60_0"
    }, 
    {
      "name""libgfortran-ng"
      "version""7.3.0-hdf63c60_0qzggav22"
    }, 
    {
      "name""libgfortran-ng"
      "version""7.3.0-hdf63c60_0yanwpjtq"
    }, 
    {
      "name""liblief"
      "version""0.10.1-he6710b0_0"
    }, 
    {
      "name""liblief"
      "version""0.10.1-he6710b0_004fpp6a1"
    }, 
    {
      "name""liblief"
      "version""0.10.1-he6710b0_0396k8vsx"
    }, 
    {
      "name""libllvm9"
      "version""9.0.1-h4a3c616_1"
    }, 
    {
      "name""libllvm9"
      "version""9.0.1-h4a3c616_10vrrmx33"
    }, 
    {
      "name""libpng"
      "version""1.6.37-hbc83047_0"
    }, 
    {
      "name""libsodium"
      "version""1.0.18-h7b6447c_0"
    }, 
    {
      "name""libsodium"
      "version""1.0.18-h7b6447c_0603oagww"
    }, 
    {
      "name""libspatialindex"
      "version""1.9.3-he6710b0_0"
    }, 
    {
      "name""libspatialindex"
      "version""1.9.3-he6710b0_01vgxhapv"
    }, 
    {
      "name""libssh2"
      "version""1.9.0-h1ba5d50_1"
    }, 
    {
      "name""libssh2"
      "version""1.9.0-h1ba5d50_12godqnfw"
    }, 
    {
      "name""libstdcxx-ng"
      "version""9.1.0-hdf63c60_0"
    }, 
    {
      "name""libtiff"
      "version""4.1.0-h2733197_1"
    }, 
    {
      "name""libtool"
      "version""2.4.6-h7b6447c_5"
    }, 
    {
      "name""libuuid"
      "version""1.0.3-h1bed415_2"
    }, 
    {
      "name""libuuid"
      "version""1.0.3-h1bed415_23spwv2ag"
    }, 
    {
      "name""libuuid"
      "version""1.0.3-h1bed415_2eo1j33lb"
    }, 
    {
      "name""libxcb"
      "version""1.14-h7b6447c_0"
    }, 
    {
      "name""libxcb"
      "version""1.14-h7b6447c_0_9_9izga"
    }, 
    {
      "name""libxml2"
      "version""2.9.10-he19cac6_1"
    }, 
    {
      "name""libxslt"
      "version""1.1.34-hc22bd24_0"
    }, 
    {
      "name""libxslt"
      "version""1.1.34-hc22bd24_09o6qwc6m"
    }, 
    {
      "name""libxslt"
      "version""1.1.34-hc22bd24_0my90fdca"
    }, 
    {
      "name""llvmlite"
      "version""0.33.0-py38hc6ec683_1"
    }, 
    {
      "name""locket"
      "version""0.2.0-py38_1"
    }, 
    {
      "name""lxml"
      "version""4.5.2-py38hefd8a0e_0"
    }, 
    {
      "name""lxml"
      "version""4.5.2-py38hefd8a0e_07qk4uzo2"
    }, 
    {
      "name""lz4-c"
      "version""1.9.2-he6710b0_0"
    }, 
    {
      "name""lz4-c"
      "version""1.9.2-he6710b0_06sx3fxaj"
    }, 
    {
      "name""lzo"
      "version""2.10-h7b6447c_2"
    }, 
    {
      "name""markupsafe"
      "version""1.1.1-py38h7b6447c_0"
    }, 
    {
      "name""matplotlib"
      "version""3.2.2-0"
    }, 
    {
      "name""matplotlib-base"
      "version""3.2.2-py38hef1b27d_0"
    }, 
    {
      "name""mccabe"
      "version""0.6.1-py38_1"
    }, 
    {
      "name""mistune"
      "version""0.8.4-py38h7b6447c_1000"
    }, 
    {
      "name""mistune"
      "version""0.8.4-py38h7b6447c_100067gc0_0j"
    }, 
    {
      "name""mistune"
      "version""0.8.4-py38h7b6447c_1000767x170z"
    }, 
    {
      "name""mkl"
      "version""2020.1-217"
    }, 
    {
      "name""mkl-service"
      "version""2.3.0-py38he904b0f_0"
    }, 
    {
      "name""mkl_fft"
      "version""1.1.0-py38h23d657b_0"
    }, 
    {
      "name""mkl_random"
      "version""1.1.1-py38h0573a6f_0"
    }, 
    {
      "name""mkl_random"
      "version""1.1.1-py38h0573a6f_08v9p4pjk"
    }, 
    {
      "name""mkl_random"
      "version""1.1.1-py38h0573a6f_0lddepiwc"
    }, 
    {
      "name""mock"
      "version""4.0.2-py_0"
    }, 
    {
      "name""mock"
      "version""4.0.2-py_05lgs7wt0"
    }, 
    {
      "name""mock"
      "version""4.0.2-py_0rqas4383"
    }, 
    {
      "name""more-itertools"
      "version""8.4.0-py_0"
    }, 
    {
      "name""more-itertools"
      "version""8.4.0-py_0mt0udzb0"
    }, 
    {
      "name""more-itertools"
      "version""8.4.0-py_0z5wou8jk"
    }, 
    {
      "name""mpc"
      "version""1.1.0-h10f8cd9_1"
    }, 
    {
      "name""mpfr"
      "version""4.0.2-hb69a4c5_1"
    }, 
    {
      "name""mpmath"
      "version""1.1.0-py38_0"
    }, 
    {
      "name""mpmath"
      "version""1.1.0-py38_023vexu98"
    }, 
    {
      "name""msgpack-python"
      "version""1.0.0-py38hfd86e86_1"
    }, 
    {
      "name""multipledispatch"
      "version""0.6.0-py38_0"
    }, 
    {
      "name""multipledispatch"
      "version""0.6.0-py38_0cbsi2_nm"
    }, 
    {
      "name""multipledispatch"
      "version""0.6.0-py38_0wie8x783"
    }, 
    {
      "name""navigator-updater"
      "version""0.2.1-py38_0"
    }, 
    {
      "name""nbconvert"
      "version""5.6.1-py38_0"
    }, 
    {
      "name""nbformat"
      "version""5.0.7-py_0"
    }, 
    {
      "name""nbformat"
      "version""5.0.7-py_0szu3zc1s"
    }, 
    {
      "name""ncurses"
      "version""6.2-he6710b0_1"
    }, 
    {
      "name""ncurses"
      "version""6.2-he6710b0_141h4ljkn"
    }, 
    {
      "name""ncurses"
      "version""6.2-he6710b0_16hpr3qcz"
    }, 
    {
      "name""networkx"
      "version""2.4-py_1"
    }, 
    {
      "name""networkx"
      "version""2.4-py_1ap2c65yn"
    }, 
    {
      "name""nltk"
      "version""3.5-py_0"
    }, 
    {
      "name""nose"
      "version""1.3.7-py38_2"
    }, 
    {
      "name""notebook"
      "version""6.0.3-py38_0"
    }, 
    {
      "name""notebook"
      "version""6.0.3-py38_0tn4uu6hf"
    }, 
    {
      "name""numba"
      "version""0.50.1-py38h0573a6f_1"
    }, 
    {
      "name""numexpr"
      "version""2.7.1-py38h423224d_0"
    }, 
    {
      "name""numexpr"
      "version""2.7.1-py38h423224d_0_49bpg_u"
    }, 
    {
      "name""numpy"
      "version""1.18.5-py38ha1c710e_0"
    }, 
    {
      "name""numpy-base"
      "version""1.18.5-py38hde5b4d6_0"
    }, 
    {
      "name""numpy-base"
      "version""1.18.5-py38hde5b4d6_0qnlpvflb"
    }, 
    {
      "name""numpydoc"
      "version""1.1.0-py_0"
    }, 
    {
      "name""numpydoc"
      "version""1.1.0-py_09_ji4jkt"
    }, 
    {
      "name""olefile"
      "version""0.46-py_0"
    }, 
    {
      "name""openpyxl"
      "version""3.0.4-py_0"
    }, 
    {
      "name""openssl"
      "version""1.1.1g-h7b6447c_0"
    }, 
    {
      "name""openssl"
      "version""1.1.1g-h7b6447c_0b1yaj4zu"
    }, 
    {
      "name""openssl"
      "version""1.1.1g-h7b6447c_0twkm2rh3"
    }, 
    {
      "name""packaging"
      "version""20.4-py_0"
    }, 
    {
      "name""pandas"
      "version""1.0.5-py38h0573a6f_0"
    }, 
    {
      "name""pandoc"
      "version""2.10-0"
    }, 
    {
      "name""pandoc"
      "version""2.10-06zjtavgb"
    }, 
    {
      "name""pandocfilters"
      "version""1.4.2-py38_1"
    }, 
    {
      "name""pandocfilters"
      "version""1.4.2-py38_191m7stfv"
    }, 
    {
      "name""pango"
      "version""1.45.3-hd140c19_0"
    }, 
    {
      "name""parso"
      "version""0.7.0-py_0"
    }, 
    {
      "name""parso"
      "version""0.7.0-py_0w9507cuf"
    }, 
    {
      "name""partd"
      "version""1.1.0-py_0"
    }, 
    {
      "name""patchelf"
      "version""0.11-he6710b0_0"
    }, 
    {
      "name""path"
      "version""13.1.0-py38_0"
    }, 
    {
      "name""path.py"
      "version""12.4.0-0"
    }, 
    {
      "name""path.py"
      "version""12.4.0-0cqh313bf"
    }, 
    {
      "name""pathlib2"
      "version""2.3.5-py38_0"
    }, 
    {
      "name""pathlib2"
      "version""2.3.5-py38_0o2x79v04"
    }, 
    {
      "name""pathtools"
      "version""0.1.2-py_1"
    }, 
    {
      "name""patsy"
      "version""0.5.1-py38_0"
    }, 
    {
      "name""pcre"
      "version""8.44-he6710b0_0"
    }, 
    {
      "name""pep8"
      "version""1.7.1-py38_0"
    }, 
    {
      "name""pexpect"
      "version""4.8.0-py38_0"
    }, 
    {
      "name""pickleshare"
      "version""0.7.5-py38_1000"
    }, 
    {
      "name""pillow"
      "version""7.2.0-py38hb39fc2d_0"
    }, 
    {
      "name""pillow"
      "version""7.2.0-py38hb39fc2d_09gluh2jj"
    }, 
    {
      "name""pip"
      "version""20.1.1-py38_1"
    }, 
    {
      "name""pip"
      "version""20.1.1-py38_1roq5zbfj"
    }, 
    {
      "name""pixman"
      "version""0.40.0-h7b6447c_0"
    }, 
    {
      "name""pkginfo"
      "version""1.5.0.1-py38_0"
    }, 
    {
      "name""pkginfo"
      "version""1.5.0.1-py38_08qjhqr2j"
    }, 
    {
      "name""pluggy"
      "version""0.13.1-py38_0"
    }, 
    {
      "name""ply"
      "version""3.11-py38_0"
    }, 
    {
      "name""ply"
      "version""3.11-py38_01pbmqajg"
    }, 
    {
      "name""ply"
      "version""3.11-py38_05h1tnscb"
    }, 
    {
      "name""prometheus_client"
      "version""0.8.0-py_0"
    }, 
    {
      "name""prometheus_client"
      "version""0.8.0-py_02ysqv8jl"
    }, 
    {
      "name""prometheus_client"
      "version""0.8.0-py_0ttv_m66o"
    }, 
    {
      "name""prompt-toolkit"
      "version""3.0.5-py_0"
    }, 
    {
      "name""prompt_toolkit"
      "version""3.0.5-0"
    }, 
    {
      "name""psutil"
      "version""5.7.0-py38h7b6447c_0"
    }, 
    {
      "name""ptyprocess"
      "version""0.6.0-py38_0"
    }, 
    {
      "name""ptyprocess"
      "version""0.6.0-py38_0g3o7nfr2"
    }, 
    {
      "name""py"
      "version""1.9.0-py_0"
    }, 
    {
      "name""py"
      "version""1.9.0-py_02qhv0hmx"
    }, 
    {
      "name""py"
      "version""1.9.0-py_0j8z1qup8"
    }, 
    {
      "name""py-lief"
      "version""0.10.1-py38h403a769_0"
    }, 
    {
      "name""py-lief"
      "version""0.10.1-py38h403a769_047bhmtuo"
    }, 
    {
      "name""py-lief"
      "version""0.10.1-py38h403a769_0_helqxpg"
    }, 
    {
      "name""pycodestyle"
      "version""2.6.0-py_0"
    }, 
    {
      "name""pycosat"
      "version""0.6.3-py38h7b6447c_1"
    }, 
    {
      "name""pycosat"
      "version""0.6.3-py38h7b6447c_1qc9ffv9n"
    }, 
    {
      "name""pycparser"
      "version""2.20-py_2"
    }, 
    {
      "name""pycurl"
      "version""7.43.0.5-py38h1ba5d50_0"
    }, 
    {
      "name""pydocstyle"
      "version""5.0.2-py_0"
    }, 
    {
      "name""pyflakes"
      "version""2.2.0-py_0"
    }, 
    {
      "name""pyflakes"
      "version""2.2.0-py_023ve0kq0"
    }, 
    {
      "name""pyflakes"
      "version""2.2.0-py_02m0h_k_7"
    }, 
    {
      "name""pygments"
      "version""2.6.1-py_0"
    }, 
    {
      "name""pygments"
      "version""2.6.1-py_0u0v0h73l"
    }, 
    {
      "name""pylint"
      "version""2.5.3-py38_0"
    }, 
    {
      "name""pylint"
      "version""2.5.3-py38_05kxovsck"
    }, 
    {
      "name""pylint"
      "version""2.5.3-py38_0oprgaq70"
    }, 
    {
      "name""pyodbc"
      "version""4.0.30-py38he6710b0_0"
    }, 
    {
      "name""pyopenssl"
      "version""19.1.0-py_1"
    }, 
    {
      "name""pyopenssl"
      "version""19.1.0-py_1_hxhs9sc"
    }, 
    {
      "name""pyparsing"
      "version""2.4.7-py_0"
    }, 
    {
      "name""pyqt"
      "version""5.9.2-py38h05f1152_4"
    }, 
    {
      "name""pyqt"
      "version""5.9.2-py38h05f1152_4lr_tk7jg"
    }, 
    {
      "name""pyrsistent"
      "version""0.16.0-py38h7b6447c_0"
    }, 
    {
      "name""pyrsistent"
      "version""0.16.0-py38h7b6447c_0mbmp1eel"
    }, 
    {
      "name""pysocks"
      "version""1.7.1-py38_0"
    }, 
    {
      "name""pytables"
      "version""3.6.1-py38h9fd0a39_0"
    }, 
    {
      "name""pytest"
      "version""5.4.3-py38_0"
    }, 
    {
      "name""pytest"
      "version""5.4.3-py38_0b_o8ugs5"
    }, 
    {
      "name""pytest"
      "version""5.4.3-py38_0jachtpzd"
    }, 
    {
      "name""python"
      "version""3.8.3-hcff3b4d_2"
    }, 
    {
      "name""python"
      "version""3.8.3-hcff3b4d_2ig1ipc0p"
    }, 
    {
      "name""python-dateutil"
      "version""2.8.1-py_0"
    }, 
    {
      "name""python-dateutil"
      "version""2.8.1-py_0jc6zn8or"
    }, 
    {
      "name""python-jsonrpc-server"
      "version""0.3.4-py_1"
    }, 
    {
      "name""python-jsonrpc-server"
      "version""0.3.4-py_1a329nma3"
    }, 
    {
      "name""python-language-server"
      "version""0.34.1-py38_0"
    }, 
    {
      "name""python-libarchive-c"
      "version""2.9-py_0"
    }, 
    {
      "name""pytz"
      "version""2020.1-py_0"
    }, 
    {
      "name""pytz"
      "version""2020.1-py_060ut9xwd"
    }, 
    {
      "name""pytz"
      "version""2020.1-py_0sn32_n4f"
    }, 
    {
      "name""pywavelets"
      "version""1.1.1-py38h7b6447c_0"
    }, 
    {
      "name""pyxdg"
      "version""0.26-py_0"
    }, 
    {
      "name""pyxdg"
      "version""0.26-py_027segdo4"
    }, 
    {
      "name""pyyaml"
      "version""5.3.1-py38h7b6447c_1"
    }, 
    {
      "name""pyyaml"
      "version""5.3.1-py38h7b6447c_1c9b8wlq1"
    }, 
    {
      "name""pyzmq"
      "version""19.0.1-py38he6710b0_1"
    }, 
    {
      "name""qdarkstyle"
      "version""2.8.1-py_0"
    }, 
    {
      "name""qdarkstyle"
      "version""2.8.1-py_0hwx0xm0i"
    }, 
    {
      "name""qt"
      "version""5.9.7-h5867ecd_1"
    }, 
    {
      "name""qt"
      "version""5.9.7-h5867ecd_1xvf94_j2"
    }, 
    {
      "name""qtawesome"
      "version""0.7.2-py_0"
    }, 
    {
      "name""qtconsole"
      "version""4.7.5-py_0"
    }, 
    {
      "name""qtconsole"
      "version""4.7.5-py_0u9ppz8te"
    }, 
    {
      "name""qtpy"
      "version""1.9.0-py_0"
    }, 
    {
      "name""qtpy"
      "version""1.9.0-py_093j5t321"
    }, 
    {
      "name""readline"
      "version""8.0-h7b6447c_0"
    }, 
    {
      "name""readline"
      "version""8.0-h7b6447c_0byhqensf"
    }, 
    {
      "name""readline"
      "version""8.0-h7b6447c_0mao44u5b"
    }, 
    {
      "name""regex"
      "version""2020.6.8-py38h7b6447c_0"
    }, 
    {
      "name""requests"
      "version""2.24.0-py_0"
    }, 
    {
      "name""requests"
      "version""2.24.0-py_01ggax9qq"
    }, 
    {
      "name""ripgrep"
      "version""11.0.2-he32d670_0"
    }, 
    {
      "name""rope"
      "version""0.17.0-py_0"
    }, 
    {
      "name""rope"
      "version""0.17.0-py_0cfklva58"
    }, 
    {
      "name""rtree"
      "version""0.9.4-py38_1"
    }, 
    {
      "name""rtree"
      "version""0.9.4-py38_1qxx8v5_p"
    }, 
    {
      "name""rtree"
      "version""0.9.4-py38_1zph8ql9j"
    }, 
    {
      "name""ruamel_yaml"
      "version""0.15.87-py38h7b6447c_1"
    }, 
    {
      "name""ruamel_yaml"
      "version""0.15.87-py38h7b6447c_105rn6e70"
    }, 
    {
      "name""ruamel_yaml"
      "version""0.15.87-py38h7b6447c_1o32i4kvz"
    }, 
    {
      "name""scikit-image"
      "version""0.16.2-py38h0573a6f_0"
    }, 
    {
      "name""scikit-image"
      "version""0.16.2-py38h0573a6f_0_q1stq6s"
    }, 
    {
      "name""scikit-learn"
      "version""0.23.1-py38h423224d_0"
    }, 
    {
      "name""scikit-learn"
      "version""0.23.1-py38h423224d_010n9ctlk"
    }, 
    {
      "name""scipy"
      "version""1.5.0-py38h0b6359f_0"
    }, 
    {
      "name""seaborn"
      "version""0.10.1-py_0"
    }, 
    {
      "name""seaborn"
      "version""0.10.1-py_0mosm70k_"
    }, 
    {
      "name""secretstorage"
      "version""3.1.2-py38_0"
    }, 
    {
      "name""send2trash"
      "version""1.5.0-py38_0"
    }, 
    {
      "name""setuptools"
      "version""49.2.0-py38_0"
    }, 
    {
      "name""setuptools"
      "version""49.2.0-py38_03s1y1h0c"
    }, 
    {
      "name""simplegeneric"
      "version""0.8.1-py38_2"
    }, 
    {
      "name""singledispatch"
      "version""3.4.0.3-py38_0"
    }, 
    {
      "name""sip"
      "version""4.19.13-py38he6710b0_0"
    }, 
    {
      "name""sip"
      "version""4.19.13-py38he6710b0_0l31rgv3m"
    }, 
    {
      "name""six"
      "version""1.15.0-py_0"
    }, 
    {
      "name""snappy"
      "version""1.1.8-he6710b0_0"
    }, 
    {
      "name""snappy"
      "version""1.1.8-he6710b0_0wl80yzod"
    }, 
    {
      "name""snowballstemmer"
      "version""2.0.0-py_0"
    }, 
    {
      "name""sortedcollections"
      "version""1.2.1-py_0"
    }, 
    {
      "name""sortedcollections"
      "version""1.2.1-py_0jdasxy71"
    }, 
    {
      "name""sortedcontainers"
      "version""2.2.2-py_0"
    }, 
    {
      "name""sortedcontainers"
      "version""2.2.2-py_0je122l_3"
    }, 
    {
      "name""sortedcontainers"
      "version""2.2.2-py_0z2heqdcg"
    }, 
    {
      "name""soupsieve"
      "version""2.0.1-py_0"
    }, 
    {
      "name""sphinx"
      "version""3.1.2-py_0"
    }, 
    {
      "name""sphinx"
      "version""3.1.2-py_0ltzkhga6"
    }, 
    {
      "name""sphinxcontrib"
      "version""1.0-py38_1"
    }, 
    {
      "name""sphinxcontrib-applehelp"
      "version""1.0.2-py_0"
    }, 
    {
      "name""sphinxcontrib-applehelp"
      "version""1.0.2-py_0ncejqcwh"
    }, 
    {
      "name""sphinxcontrib-devhelp"
      "version""1.0.2-py_0"
    }, 
    {
      "name""sphinxcontrib-htmlhelp"
      "version""1.0.3-py_0"
    }, 
    {
      "name""sphinxcontrib-htmlhelp"
      "version""1.0.3-py_0hbrwrq90"
    }, 
    {
      "name""sphinxcontrib-htmlhelp"
      "version""1.0.3-py_0rlznsjzh"
    }, 
    {
      "name""sphinxcontrib-jsmath"
      "version""1.0.1-py_0"
    }, 
    {
      "name""sphinxcontrib-jsmath"
      "version""1.0.1-py_0ghe15zhb"
    }, 
    {
      "name""sphinxcontrib-qthelp"
      "version""1.0.3-py_0"
    }, 
    {
      "name""sphinxcontrib-serializinghtml"
      "version""1.1.4-py_0"
    }, 
    {
      "name""sphinxcontrib-websupport"
      "version""1.2.3-py_0"
    }, 
    {
      "name""sphinxcontrib-websupport"
      "version""1.2.3-py_00bg3iwdy"
    }, 
    {
      "name""spyder"
      "version""4.1.4-py38_0"
    }, 
    {
      "name""spyder"
      "version""4.1.4-py38_0ngzxs8hg"
    }, 
    {
      "name""spyder-kernels"
      "version""1.9.2-py38_0"
    }, 
    {
      "name""spyder-kernels"
      "version""1.9.2-py38_00keyp827"
    }, 
    {
      "name""sqlalchemy"
      "version""1.3.18-py38h7b6447c_0"
    }, 
    {
      "name""sqlalchemy"
      "version""1.3.18-py38h7b6447c_0kxper8h5"
    }, 
    {
      "name""sqlite"
      "version""3.32.3-h62c20be_0"
    }, 
    {
      "name""statsmodels"
      "version""0.11.1-py38h7b6447c_0"
    }, 
    {
      "name""sympy"
      "version""1.6.1-py38_0"
    }, 
    {
      "name""sympy"
      "version""1.6.1-py38_0okfo5ynk"
    }, 
    {
      "name""tbb"
      "version""2020.0-hfd86e86_0"
    }, 
    {
      "name""tblib"
      "version""1.6.0-py_0"
    }, 
    {
      "name""terminado"
      "version""0.8.3-py38_0"
    }, 
    {
      "name""testpath"
      "version""0.4.4-py_0"
    }, 
    {
      "name""testpath"
      "version""0.4.4-py_03farm55q"
    }, 
    {
      "name""testpath"
      "version""0.4.4-py_0glkmtknr"
    }, 
    {
      "name""threadpoolctl"
      "version""2.1.0-pyh5ca1d4c_0"
    }, 
    {
      "name""tk"
      "version""8.6.10-hbc83047_0"
    }, 
    {
      "name""tk"
      "version""8.6.10-hbc83047_0zh3uyrn6"
    }, 
    {
      "name""toml"
      "version""0.10.1-py_0"
    }, 
    {
      "name""toolz"
      "version""0.10.0-py_0"
    }, 
    {
      "name""tornado"
      "version""6.0.4-py38h7b6447c_1"
    }, 
    {
      "name""tqdm"
      "version""4.47.0-py_0"
    }, 
    {
      "name""tqdm"
      "version""4.47.0-py_0a65yw59h"
    }, 
    {
      "name""traitlets"
      "version""4.3.3-py38_0"
    }, 
    {
      "name""typing_extensions"
      "version""3.7.4.2-py_0"
    }, 
    {
      "name""typing_extensions"
      "version""3.7.4.2-py_07uhga40f"
    }, 
    {
      "name""typing_extensions"
      "version""3.7.4.2-py_0jsccdgyk"
    }, 
    {
      "name""ujson"
      "version""1.35-py38h7b6447c_0"
    }, 
    {
      "name""ujson"
      "version""1.35-py38h7b6447c_0mtteeji4"
    }, 
    {
      "name""unicodecsv"
      "version""0.14.1-py38_0"
    }, 
    {
      "name""unicodecsv"
      "version""0.14.1-py38_0qvw3gqrp"
    }, 
    {
      "name""unixodbc"
      "version""2.3.7-h14c3975_0"
    }, 
    {
      "name""unixodbc"
      "version""2.3.7-h14c3975_0mh0z6_c3"
    }, 
    {
      "name""urllib3"
      "version""1.25.9-py_0"
    }, 
    {
      "name""watchdog"
      "version""0.10.3-py38_0"
    }, 
    {
      "name""wcwidth"
      "version""0.2.5-py_0"
    }, 
    {
      "name""webencodings"
      "version""0.5.1-py38_1"
    }, 
    {
      "name""webencodings"
      "version""0.5.1-py38_1a72bffn8"
    }, 
    {
      "name""werkzeug"
      "version""1.0.1-py_0"
    }, 
    {
      "name""werkzeug"
      "version""1.0.1-py_0k3wv_lav"
    }, 
    {
      "name""wheel"
      "version""0.34.2-py38_0"
    }, 
    {
      "name""widgetsnbextension"
      "version""3.5.1-py38_0"
    }, 
    {
      "name""wrapt"
      "version""1.11.2-py38h7b6447c_0"
    }, 
    {
      "name""wurlitzer"
      "version""2.0.1-py38_0"
    }, 
    {
      "name""xlrd"
      "version""1.2.0-py_0"
    }, 
    {
      "name""xlsxwriter"
      "version""1.2.9-py_0"
    }, 
    {
      "name""xlwt"
      "version""1.3.0-py38_0"
    }, 
    {
      "name""xmltodict"
      "version""0.12.0-py_0"
    }, 
    {
      "name""xmltodict"
      "version""0.12.0-py_00qb_5rqe"
    }, 
    {
      "name""xmltodict"
      "version""0.12.0-py_0pzxi_puq"
    }, 
    {
      "name""xz"
      "version""5.2.5-h7b6447c_0"
    }, 
    {
      "name""xz"
      "version""5.2.5-h7b6447c_0zbt1d055"
    }, 
    {
      "name""yaml"
      "version""0.2.5-h7b6447c_0"
    }, 
    {
      "name""yaml"
      "version""0.2.5-h7b6447c_00a6py0xf"
    }, 
    {
      "name""yapf"
      "version""0.30.0-py_0"
    }, 
    {
      "name""zeromq"
      "version""4.3.2-he6710b0_2"
    }, 
    {
      "name""zeromq"
      "version""4.3.2-he6710b0_2djve4jxi"
    }, 
    {
      "name""zict"
      "version""2.0.0-py_0"
    }, 
    {
      "name""zipp"
      "version""3.1.0-py_0"
    }, 
    {
      "name""zlib"
      "version""1.2.11-h7b6447c_3"
    }, 
    {
      "name""zlib"
      "version""1.2.11-h7b6447c_3kpk_ayyv"
    }, 
    {
      "name""zope"
      "version""1.0-py38_1"
    }, 
    {
      "name""zope.event"
      "version""4.4-py38_0"
    }, 
    {
      "name""zope.interface"
      "version""4.7.1-py38h7b6447c_0"
    }, 
    {
      "name""zope.interface"
      "version""4.7.1-py38h7b6447c_0qdhn96sa"
    }, 
    {
      "name""zstd"
      "version""1.4.5-h0b5b093_0"
    }
  ], 
  "provides": [
    "spark-plugin"
  ], 
  "schema_version"1
  "scripts": {
    "defines""conda_env.sh"
  }, 
  "setActiveSymlink"true
  "users": {}, 
  "version""2020.07"
}


創建用於生成parcel的文件夾,重命名anaconda包的文件夾並放入其中,注意這裏文件名有嚴格要求,否則打包parcel和分發時會出錯

mkdir /root/anaconda-parcel
mv /root/anaconda3 /root/anaconda-parcel/Anaconda3-2020.07


打包成parcel

tar zcvf Anaconda3-2020.07-el7.parcel Anaconda3-2020.07/ --owner=root --group=root


生成sha1和sha256

sha1sum Anaconda3-2020.07-el7.parcel  | cut -d ' ' -f 1 > Anaconda3-2020.07-el7.parcel.sha1
sha256sum Anaconda3-2020.07-el7.parcel | cut -d ' ' -f 1 > Anaconda3-2020.07-el7.parcel.sha256


下載cloudera提供的parcel和csd校驗工具cm_ext

地址爲https://github.com/cloudera/cm_ext

生成manifest.json

python cm_ext/make_manifest/make_manifest.py .


manifest.json文件如下

{
    "parcels": [
        {
            "hash""3ee385fd89ad454015c945c88f42563c318ade8c",
            "parcelName""Anaconda3-2020.07-el7.parcel",
            "components": [
                {
                    "pkg_version""2020.07",
                    "version""2020.07",
                    "name""Anaconda3"
                }
            ]
        }
    ],
    "lastUpdated"1600151161169
}


生成後的目錄結構如下


2.安裝包方式



下載linux安裝包一臺臺安裝,linux版本下載地址爲

https://repo.continuum.io/archive/

常用版本對應關係如下,需要下載類似Anaconda3-5.2.0-Linux-x86_64.sh的包

Python3.5 https://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86_64.sh

Python3.6 https://repo.continuum.io/archive/Anaconda3-5.2.0-Linux-x86_64.sh

這裏以python3.6爲例簡要說明如下

進入到安裝包目錄,執行命令

bash Anaconda3-5.2.0-Linux-x86_64.sh


輸入回車鍵


輸入”yes”,設置安裝路徑,這裏安裝在/usr/local/anaconda3目錄下,

如果提示“tar(child): bzip2: Cannot exec: No such file or directory”,需要先安裝bzip2。

yum -y install bzip2


安裝完後,提示設置anaconda的PATH路徑


新的版本會提示創建環境


如果這裏選擇yes,anaconda會在~/.bashrc中加入一些環境變量,這樣會導致impala-shell命令不可用,不建議設置

如果需要在環境變量中增加python3,可以採用以下方式

ln -s /usr/local/anaconda3/bin/python3.7 /usr/bin/python3


本文分享自微信公衆號 - Hadoop實操(gh_c4c535955d0f)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章