背景
为了学习tensorflow 2.0 ,在不影响base环境的情况下,创建了一个虚拟环境,想使用jupyter 的智能代码提示功能,网上找了很多博客去都是简单的说安装nbextension插件,勾选Hinterland,但是这个只适用于base环境,新建的虚拟环境即使勾选了Hinterland也是无法智能提示代码。以下是爬坑路的总结:
1.base环境安装nbextension插件,勾选Hinterland,虚拟环境前往不要安装此插件,不然会提示冲突,导致虚拟环境无法使用智能代码提示。
base环境操作如下:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install --user jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
在 base 环境中进入notebook,可以看到nbextension工具栏,然后勾选Codefolding和Hinterland即可开启代码提示功能。
2.创建虚拟环境
输入 conda create -n tensorflow python=3.6
,创建tensorflow环境
输入activate tensorflow
,激活环境
1、切换到要添加的虚拟环境,确认是否安装 ipykernel
python -m ipykernel --version
安装ipykernel: python -m pip install ipykernel
为 Jupyter 添加内核
python -m ipykernel install --user --name=tensorflow --display-name tensorflow
这种方式会默认添加到: C:\ProgramData\jupyter\kernels\tensorflow
此处建议指定Kernel保存的路径,代码如下:
python -m ipykernel install --name tensorflow --display-name tensorflow --prefix "D:\Anaconda3"
–name tensorflow 中的 tensorflow 是自定义的Kernel保存的名字;
–display-name "tensorflow " 中的 tensorflow 是自定义的Kernel页面中显示的名字;
–prefix “D:\Anaconda3” 中的 Anaconda3 是自己指定的Kernel保存的路径。我把Kernel保存在Anaconda3的路径下,具体是保存到了路径"\Anaconda3\share\jupyter\kernels"下。
强烈建议Kernel保存在Anaconda3的路径中,以免出错。
查看kernel列表:jupyter kernelspec list
删除kernel:
jupyter kernelspec remove kernelname
添加DLL文件
为了防止后面切换到虚拟环境中的Kernel时,各种依赖的库找不到,将虚拟环境中路径 Anaconda3\envs\tensorflow \Library\bin 中的 所有文件 全部复制到路径 Anaconda3\envs\tensorflow 中。
添加环境变量
为了防止后面出错,我们将anaconda的 base 环境和对应的虚拟环境 tensorflow 添加到系统的环境变量中。(详情可参考:添加系统环境变量)
在用户变量的Path和系统变量的Path中都添加上文件路径 Anaconda3\Library\bin 和文件路径 Anaconda3\envs\tensorflow \Library\bin 即可。
注:如果没有复制DLL文件或添加环境变量,后面可能会出现这个报错:
ImportError: DLL load failed while importing error: 找不到指定的模块。
在anaconda的 base 环境中切换notebook的Kernel,即可实现之恶能代码提示功能。
安装jedi包(此步骤非必要)
如果你发现代码提示仍然无效,或者Anaconda的Prompt终端中出现以下报错:
TypeError: __init__() got an unexpected keyword argument 'column'
可能是你的Anaconda虚拟环境中的 jedi 包不兼容问题。只需在对应的虚拟环境中重新安装 jedi 的以下版本(详情可参考:Last jedi release (0.18.0) is incompatible with ipython (7.19 and 7.18 tested); reason - column arg was deprecated, and now removed #12740):
pip install jedi==0.17.2
到此,终于成功实现了在Anaconda的 base 环境中,切换到虚拟环境中创建的Kernel,并出现代码提示推荐。
下面补充一些tensorflow2.0的安装
conda install --channel https://conda.anaconda.org/anaconda tensorflow==2.0.0