• Anaconda3的Jupyter notebook切换Python3和Python2环境并调用Arcpy


    1 运行 cmd 或 Anaconda Prompt

    在任务栏 "开始" 中找到 Anaconda Prompt (Anaconda3),也可以直接使用 cmd(命令提示符)

    考虑到anaconda的很多包是联网下载,默认是从连接外国网站的,速度受限时,请添加源镜像

    2 创建 Python2 的虚拟环境

    执行conda create -n 虚拟环境名 python=2.7创建虚拟环境


    如果出现上面的结果(有任何反应),表示有创建环境存在问题,使用conda clean --all删除上次创建时,安装的缓存,重置anaconda环境,重新尝试

    3 Jupyter 配置 Python2 虚拟环境

    (base) C:\User\lqq>表示我们在base环境中

    执行activate Python2激活 Python2环境。

    在 Python2 环境中,推荐使用pip安装 ipykernel,虽然执行conda install ipykernel也可以安装 ipykernel,但有时会出现 Jupyter 不能启动 Python2 环境

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ipykernel
    


    在 Python2 环境中,使用pip安装ipykernel,执行代码如下:

    执行python -m ipykernel install --user --name Python2 --display-name "Python 2"将Python2环境的kernel写入Jupyter的kernel

    目前,我们已经可以在Jupyter中看到Python2的环境

    执行pip install autopep8,pip install ipywidgets,pip install widgetsnbextension,pip install tqdm可以安装autopep8ipywidgetstqdm必备插件

    使用jupyter nbextension enable --py widgetsnbextension将jupyter的插件与ipywidgets进行关联

    实现Python2环境,在jupyter中正常使用tqdm_notebook

    注意!如果在Jupyter中不能正常运行Python2服务,可以将Python2环境的包升级到较高版本
    在Python2环境中,执行pip install pipupgrade安装pipupgrade包,pipupgrade包可以实现将已经安装的python包集体升级

    安装pipupgrade包之后,执行pipupgrade --latest --yes,进行Python2环境的python包升级

    也可以执行pipupgrade --verbose --latest --yes--verbose提供用户对升级包的查看,红色字体的包是不适合升级

    4 导入 Arcpy

    创建arcpy.pth文件,根据ArcGIS安装路径,在arcpy.pth文件中输入内容:

    C:\Python27\ArcGIS10.4
    C:\Python27\ArcGIS10.4\libs
    C:\Python27\ArcGIS10.4\Scripts
    C:\Python27\ArcGIS10.4\Lib\site-packages
    C:\Program Files (x86)\ArcGIS\Desktop10.4\bin
    C:\Program Files (x86)\ArcGIS\Desktop10.4\arcpy
    C:\Program Files (x86)\ArcGIS\Desktop10.4\arcpy\arcpy
    C:\Program Files (x86)\ArcGIS\Desktop10.4\arcpy\arcpy\geoprocessing
    C:\Program Files (x86)\ArcGIS\Desktop10.4\ArcToolbox\Scripts
    

    注意:由于 ArcGIS 是 32位的,使用32位的 arcpy,需要创建32位的虚拟环境,在建立虚拟环境的时候,将 conda 设置为32位后,才能建立32位的虚拟环境,conda的设置代码如下:

    set CONDA_FORCE_32BIT=1
    conda create -n arcgis-py32 python=2.7
    

    如果安装了ArcGIS Server,可以调用64位的arcpy,则arcpy.pth输入内容为:

    C:\Python27\ArcGISx6410.4
    C:\Python27\ArcGISx6410.4\libs
    C:\Python27\ArcGISx6410.4\Scripts
    C:\Python27\ArcGISx6410.4\Lib\site-packages
    C:\Program Files\ArcGIS\Server\bin
    C:\Program Files\ArcGIS\Server\arcpy
    C:\Program Files\ArcGIS\Server\arcpy\arcpy
    C:\Program Files\ArcGIS\Server\arcpy\arcpy\geoprocessing
    C:\Program Files\ArcGIS\Server\ArcToolbox\Scripts
    

    如果安装了ArcGIS Desktop Background Geoprocessing(64bit), 也可以调用64位的arcpy,则arcpy.pth内容为:

    C:\Python27\ArcGISx6410.4
    C:\Python27\ArcGISx6410.4\libs
    C:\Python27\ArcGISx6410.4\Scripts
    C:\Python27\ArcGISx6410.4\Lib\site-packages
    C:\Program Files (x86)\ArcGIS\Desktop10.4\bin64
    C:\Program Files (x86)\ArcGIS\Desktop10.4\arcpy
    C:\Program Files (x86)\ArcGIS\Desktop10.4\arcpy\arcpy
    C:\Program Files (x86)\ArcGIS\Desktop10.4\arcpy\arcpy\geoprocessing
    C:\Program Files (x86)\ArcGIS\Desktop10.4\ArcToolbox\Scripts
    

    执行conda env list查看 Python2环境的路径

    将arcpy.pth文件拷贝到C:\Users\lqq\Anaconda3\envs\Python2\Lib\site-packages路径下

    5 导出配置包

    为了方便在其他电脑上配置Python2环境,在激活的虚拟环境中,执行pip list --format=freeze > D:/requirements.txt导出配置好的包

    在其他电脑上激活Python2环境,执行pip install -r requirement.txt的路径可以自动配置所需包

    以下是本人的Python2环境最终配置的所有包

    attrs==19.3.0
    autopep8==1.5.3
    backports-abc==0.5
    backports.functools-lru-cache==1.6.1
    backports.shutil-get-terminal-size==1.0.0
    backports.shutil-which==3.5.2
    bleach==3.1.5
    certifi==2019.11.28
    colorama==0.4.3
    configparser==4.0.2
    contextlib2==0.6.0.post1
    decorator==4.4.2
    defusedxml==0.6.0
    entrypoints==0.3
    enum34==1.1.10
    functools32==3.2.3.post2
    futures==3.3.0
    GDAL==2.2.4
    importlib-metadata==1.6.1
    ipaddress==1.0.23
    ipykernel==4.10.1
    ipython==5.9.0
    ipython-genutils==0.2.0
    ipywidgets==7.5.1
    Jinja2==2.11.2
    joblib==0.14.1
    jsonschema==3.2.0
    jupyter==1.0.0
    jupyter-client==5.3.4
    jupyter-console==5.2.0
    jupyter-contrib-core==0.3.3
    jupyter-contrib-nbextensions==0.5.1
    jupyter-core==4.6.3
    jupyter-highlight-selected-word==0.2.0
    jupyter-latex-envs==1.4.6
    jupyter-nbextensions-configurator==0.4.1
    lxml==4.5.1
    MarkupSafe==1.1.1
    mistune==0.8.4
    nbconvert==5.6.1
    nbformat==4.4.0
    nose==1.3.7
    notebook==5.7.9
    numpy==1.16.6
    packaging==20.4
    pandas==0.24.2
    pandocfilters==1.4.2
    pathlib2==2.3.5
    pickleshare==0.7.5
    prometheus-client==0.8.0
    prompt-toolkit==1.0.18
    pycodestyle==2.6.0
    Pygments==2.5.2
    pyparsing==2.4.7
    pyrsistent==0.16.0
    python-dateutil==2.8.1
    pytz==2020.1
    pywin32==227
    pywinpty==0.5.7
    PyYAML==5.3.1
    pyzmq==19.0.1
    qtconsole==4.7.4
    QtPy==1.9.0
    scandir==1.10.0
    Send2Trash==1.5.0
    simplegeneric==0.8.1
    singledispatch==3.4.0.3
    six==1.15.0
    sympy==0.7.6
    terminado==0.8.3
    testpath==0.4.4
    toml==0.10.1
    tornado==5.1.1
    tqdm==4.46.1
    traitlets==4.3.3
    wcwidth==0.2.4
    webencodings==0.5.1
    widgetsnbextension==3.5.1
    win-unicode-console==0.5
    wincertstore==0.2
    xlrd==0.9.3
    zipp==1.2.0
    

    6 虚拟环境备份和恢复

    在Python2环境中,执行conda env export > C:\Users\lqq\Desktop\arcpy2.yml将Python2虚拟环境备份到arcpy2.yml文件中

    之后可以在已经安装了conda的电脑上,修改arcpy2.yml文件中的信息,将name: new_arcpy2改成想要建立的虚拟环境名

    修改arcpy2.yml最后一行prefix: C:\Users\lqq\.conda\envs\new_arcpy2为想要建立的虚拟环境的路径

    执行conda env create -f 路径\arcpy2.yml,就可以在新电脑上创建名称为new_arcpy2的虚拟环境,且配置包与arcpy2.yml备份的虚拟环境相同

    之后只需要像前文中一样执行python -m ipykernel install --user --name new_arcpy2 --display-name "new_arcpy2"为jupyter添加新的虚拟环境的kernel信息

    7 虚拟环境的移除

    执行conda remove -n 环境名称 --all来移除已经创建的环境,譬如我们使用conda remove -n Python2 --all将Python2环境移除之后,再次查看所有环境:


    虽然已经移除了conda的虚拟环境,但是在 jupyter notebook 的 kernel 中已然存在Python2, 选择改环境会报错,因为改环境已经不存在

    使用jupyter kernelspec list可以查看 jupyter 中的 kernel 信息

    使用jupyter kernelspec remove 名称,对 kernal 进行删除

  • 相关阅读:
    vue中路由跳转传递参数
    父组件向子孙组件传递数据provide/inject
    微信、QQ等内置浏览器定位失败
    Java ArrayList类
    java 生成 [1, n] 之间的随机数
    Java 构造方法
    Java this关键字
    Java private关键字及作用
    Java 随笔
    Java 内存划分
  • 原文地址:https://www.cnblogs.com/lqqgis/p/12657019.html
Copyright © 2020-2023  润新知