Jupyter 下 ImportError: No module named ‘tensorflow’ | conda 4.8.2,python3.7版本安装tensorflow
目录
用Anaconda搭建所需的python环境时,出现了一些错误,于是我在网上搜罗了很久,折腾了半天,好在最终问题得以解决,在此纪念那逝去的若干小时(天)……
1. 问题
1.1 No module named ‘tensorflow’
Anaconda安装TensorFlow 之后,通过Jupyter运行,出现错误 ImportError: No module named ‘tensorflow’.
但在Anaconda Prompt 对应环境使用 pip list
命令可查找到tensorflow包,如下:
到这里,不禁让人匪夷所思,难道这是我离平行宇宙最近的一次吗???
翻到了该博客,打印了sys.path
,终于发现问题所在。
我在Anaconda下创建了三个虚拟环境,base下是python3.7环境,另有两个虚拟环境名字分别为python36和python36tf2x,python36可以找到tensorflow包,其路径为下面第一张图所示;python36tf2x环境下报出上述ModuleNotFoundError错误,其路径如下面第二张所示。
查看path路径发现,能成功运行tensorflow的python虚拟环境path正确,而不能找到包的path有误,那么python36tf2x环境之所以找不到包主要原因是给的path不匹配。python37的路径怎么能找到python36tf2x所需要的包呢,是吧?
所以今后在Jupyter创建环境kernel时,一定要先激活对应虚拟环境,否则一切都是白搭~ 正确搭建环境的具体操作可往下看 ~
1.2 FutureWarning:Passing (type, 1) or ‘1type’ as …
python36环境下虽然能成功找到包,但是却发出了FutureWarning。
虽然,该警告不是什么大影响,但天天看着它会觉得异常难受。
后来发现是版本问题。每个虚拟环境下,各module或各库之间的版本要相匹配。当时该环境下,tensorflow-1.12 与 numpy-1.19 并不匹配,适当降低numpy版本后(我降到了numpy-1.15),警告也随之消失了。
2. Anaconda下搭建python环境合理步骤
主要步骤:
-
在Anaconda下创建新的 python3.6 环境,并命名python36
conda create --name python36 python=3.6
-
进入刚创好的python3.6 环境,激活对应环境名
conda activate python36
conda deactivate
可回到 (base) 环境。 -
下载tensorflow包
pip install tensorflow
Jupyter notebook 的 kernel 配置
-
在同样的python36环境下,切换到想要将编程文件保存的目录(切换盘符不加cd)
D: D:\sddr\python_jupyter
-
将环境写入notebook的kernel中
python -m ipykernel install --user --name python36 --display-name "Python (python36)"
-
若报错No module named ipykernel,则安装对应包;安装完成后重复步骤5
pip install ipykernel
下图为示例,在python36tf2x环境下转到D盘某目录并创建kernel.
- kernel配置成功会显示
Installed kernelspec python36 in C:\Users\xxxx\AppData\Roaming\jupyter\kernels\python36
. 至此,对应环境的tensorflow也能找到自己的路径包了。
参考博客: