conda 下安装jupyter notebook
上一篇因为要安装tensorflow,所以anaconda 安装的是mini 版的,mini版大部分功能都是没有的,相当于装了一个conda的包管理器,然后顺带装了一些包,给大家看看这个mini的安装包的情况。
可以看到相比于完成的anaconda默认自带的150多个包,这个mini 版的只有18个包左右。一些常用的工具比如jupyter notebook也是没有的。只是我比较习惯用conda的包管理了,所以也不纠结是不是可以尝试其他方法装tensorflow了。所以决定安装jupyter notebook了。
安装jupyter notebook
在终端输入以下命令:Conda install jupyter notebook
发现最后报错了(囧)
RemoveError: ‘setuptools’ is a dependency of conda and cannot be removed from
conda’s operating environment.
这个错误应该是跟我之前安装过anaconda官网上的完整版本有关系,还有可能跟我之前在安装miniconda 的时候在某一个环节使用了sudo有关系。后来发现stackoverflow上有解决方案 python - RemoveError: ‘requests’ is a dependency of conda and cannot be removed from conda’s operating environment - Stack Overflow 。高票答案是说要重新升级一下conda 还有部分说是先卸载setuptools,再升级conda。这里说一下适应于我的解决方案。
因为我直接升级conda的时候,依然报最开始的错误,所以我就选择先卸载setuptools,卸载的时候遇到了权限不够的问题,然后就先解决了权限的问题,再卸载setuptools,再升级conda,最后成功安装jupyter notebook。
记录下我的详细步骤:
- 一开始我选择直接升级conda,发现依然报错
输入以下命令后:conda update —force conda
报错:
RemoveError: ‘setuptools’ is a dependency of conda and cannot be removed from
conda’s operating environment.
- 选择先卸载setuptools,报权限错误
输入卸载命令:conda uninstall setuptools
报权限错误:
Permission denied: ‘/Users/xx/miniforge3/lib/python3.9/site-packages/_distutils_hack/__init__.py
发现是site-packages权限不够,这里我选择的是修改这个文件夹的权限。
3. 修改权限
进入到site-packages文件目录后,查看文件夹权限:ls -l
发现有部分文件的权限是属于root用户的,这里我决定对整个文件夹的文件都更改为当前用户。
因为是需要更新site-packages文件夹下的文件,所以一定要先进入到site-packages目录下,执行以下命令,或者这里可以把命令中的./ 当前文件夹改成绝对路径。sudo chown -R yangli:staff ./
执行完后可以再看一下权限,就知道是否更新成功了。
4. 然后再重新执行第一步,升级conda,就会发现执行成功了。
5. 最后终于可以进入到安装jupyter notebook的正事当中了conda install jupyter notebook
激动的心颤抖的手呀,成功了。开心
- 测试验证
终端输入以下命令,浏览器会弹出notebook的工作目录,就可以开开心心写代码了。jupyter notebook
jupyter notebook 配置
jupyter notebook 安装完成后,我习惯改工作目录,设置多个python环境,以及是否开机自动启动之类的设置。接下来就记录下如何去设置这些配置。
- 修改notebook的工作目录
1.1生成notebook的配置文件
设置配置文件,终端输入以下命令,会提示已将文件写入到xx。这个路径下的config文件就是我们要修改。 这里提醒一下,如果之前生成过config文件了,输入这个命令后,会提示是否需要覆盖原文件,如果选择是,则相当于原文件会被这个默认的文件覆盖,之前原文件上的修改就不在了,所以需要根据自身需求选择是否覆盖。jupyter notebook —generate-config
1.2.修改config文件
打开config文件,vim打开,以下命令修改为第1步的config路径。vim /Users/xx/.jupyter/jupyter_notebook_config.py
查找c.NotebookApp.notebook_dir = ,vim打开文件后,在命令行模式下,输入/dir 回车,就会查找到(关于vim 常用命令可以在网上搜索)。找到后,将这行的注释去掉,在=后面加上自己想设置的目录,保存修改后退出。
可以在终端启动notebook看是否设置成功。
2. 将之前我设置的tensorflow虚拟环境增加到jupyter的kernel中
2.1 查看当前已安装的虚拟环境
conda info -e
可以看到目前我有两个,现在决定把tensorflow 加入到kernel中,方便之后的调试工作。
2.2 激活tensorflow环境
conda activate tensorflow_env
激活后,会在前面显示当前的环境
2.3 安装ipykernel
为当前的虚拟环境安装ipykernel。conda install ipykernel
2.4 生成ipykernel的配置文件python -m ipykernel install —name tensorflow_env
2.5 查看已有的kerneljupyter kernelspec list
已经成功的把tensorflow_env加入到kernel 中了。
2.6 删除某一kernel
这里只是删除了配置文件,并没有删除虚拟环境。
jupyter kernelspec remove kernelname
2.7 验证
验证除了上述说的命令行的形式,也可以在notebook下的新建或者new下查看。这样就实现在notebook下随意切换环境了。美美哒
- 设置notebook开机&后台启动
3.1 后台启动
后台启动是为了在终端关闭的时候,notebook也能不受影响的继续运行。以下命令是后台启动并把运行日志记录在/Users/xx/python_pro下的jupyter.log中,根据需要更新路径。nohup jupyter notebook > /Users/xx/python_pro/jupyter.log 2>&1 &
3.2 开机启动
不想每次开机都要手动启动notebook,于是决定弄一个脚本来实现;
p=`ps ax | grep 'jupyter' | grep -v 'grep'`
if [ ! -n "$p" ];then
nohup jupyter notebook > /Users/xx/python_pro/jupyter.log 2>&1 &
sleep 1.5
open -a Safari http://localhost:8888/ # 请替换成自己jupyter的访问地址和端口
else
open -a Safari http://localhost:8888/
fi
脚本保存为notebookr_run.sh,之后点击这个shell文件,右键显示内容,打开方式选择终端。如果默认的推荐程序没有终端,需要在界面的下方选择所有程序。
打开系统偏好,选择用户与群组,选择登陆项,添加shell脚本文件。
- jupyter notebook 服务的常用命令
开启notebook服务jupyter notebook
查看当前已开启的notebook服务jupyter notebook list
后台开启notebook服务nohup jupyter notebook
终止某个端口号的notebook服务jupyter notebook stop 端口号