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/下载需要的版本,安装后目录结构如下

0838-通过Anaconda部署python3环境_spark


在该目录中建立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
}


生成后的目录结构如下

0838-通过Anaconda部署python3环境_python_02


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


输入回车键

0838-通过Anaconda部署python3环境_json_03


输入”yes”,设置安装路径,这里安装在/usr/local/anaconda3目录下,

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

yum -y install bzip2

0838-通过Anaconda部署python3环境_json_04


安装完后,提示设置anaconda的PATH路径

0838-通过Anaconda部署python3环境_python_05


新的版本会提示创建环境

0838-通过Anaconda部署python3环境_json_06


如果这里选择yes,anaconda会在~/.bashrc中加入一些环境变量,这样会导致impala-shell命令不可用,不建议设置

如果需要在环境变量中增加python3,可以采用以下方式

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