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用户的,这里我决定对整个文件夹的文件都更改为当前用户。![[image:B1AE2CD9-3C32-4CB5-B760-CF99331DE13B-858-00000032E73541D6/6EB23EA3-ED07-4CF2-9C5F-63FD776FE099.png]](https://code84.com/wp-content/uploads/2022/10/20210127212646854.png)
因为是需要更新site-packages文件夹下的文件,所以一定要先进入到site-packages目录下,执行以下命令,或者这里可以把命令中的./ 当前文件夹改成绝对路径。
sudo chown -R yangli:staff ./
执行完后可以再看一下权限,就知道是否更新成功了。
4. 然后再重新执行第一步,升级conda,就会发现执行成功了。
5. 最后终于可以进入到安装jupyter notebook的正事当中了
conda install jupyter notebook
激动的心颤抖的手呀,成功了。开心![[image:40DBF621-D7B6-41C1-9A06-5A2E414E1503-858-0000004C94292EC8/7E42113A-4BFB-4526-AE67-F889376985A4.png]](https://code84.com/wp-content/uploads/2022/10/2021012721270951.png)
- 测试验证
终端输入以下命令,浏览器会弹出notebook的工作目录,就可以开开心心写代码了。
jupyter notebook
jupyter notebook 配置
jupyter notebook 安装完成后,我习惯改工作目录,设置多个python环境,以及是否开机自动启动之类的设置。接下来就记录下如何去设置这些配置。
- 修改notebook的工作目录
1.1生成notebook的配置文件
设置配置文件,终端输入以下命令,会提示已将文件写入到xx。这个路径下的config文件就是我们要修改。 这里提醒一下,如果之前生成过config文件了,输入这个命令后,会提示是否需要覆盖原文件,如果选择是,则相当于原文件会被这个默认的文件覆盖,之前原文件上的修改就不在了,所以需要根据自身需求选择是否覆盖。
jupyter notebook —generate-config
![[image:B38D221A-8398-4B78-A035-68BB511B7687-858-00000053071BF42A/A75BD463-3AC4-4868-BBEC-00287D0A3EDE.png]](https://code84.com/wp-content/uploads/2022/10/20210127212727663.png)
1.2.修改config文件
打开config文件,vim打开,以下命令修改为第1步的config路径。
vim /Users/xx/.jupyter/jupyter_notebook_config.py
查找c.NotebookApp.notebook_dir = ,vim打开文件后,在命令行模式下,输入/dir 回车,就会查找到(关于vim 常用命令可以在网上搜索)。找到后,将这行的注释去掉,在=后面加上自己想设置的目录,保存修改后退出。![[image:349245B3-161D-48B4-8EBC-8C62D0A6E074-858-000000581D826770/7048D7BB-B380-49EB-8E85-66A0338C3324.png]](https://code84.com/wp-content/uploads/2022/10/20210127212747491.png)
可以在终端启动notebook看是否设置成功。
2. 将之前我设置的tensorflow虚拟环境增加到jupyter的kernel中
2.1 查看当前已安装的虚拟环境
conda info -e
可以看到目前我有两个,现在决定把tensorflow 加入到kernel中,方便之后的调试工作。![[image:89BEE3CD-5EBB-409B-B9F1-44A08A69A812-858-000000665B36C3AB/A92DFD35-6B8F-4A5A-8CAF-779B9BE3E8A6.png]](https://code84.com/wp-content/uploads/2022/10/20210127212800145.png)
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 查看已有的kernel
jupyter kernelspec list
已经成功的把tensorflow_env加入到kernel 中了。![[image:1B623118-8A2A-4EA5-B4BF-26A4369EE742-858-00000069109C9D17/F0E88BCE-378F-4F2E-83E4-A05633514565.png]](https://code84.com/wp-content/uploads/2022/10/20210127212831849.png)
2.6 删除某一kernel
这里只是删除了配置文件,并没有删除虚拟环境。
jupyter kernelspec remove kernelname
2.7 验证
验证除了上述说的命令行的形式,也可以在notebook下的新建或者new下查看。这样就实现在notebook下随意切换环境了。美美哒![[image:1E1F59A8-9DDA-424A-91E9-A504336C8DF0-858-0000006AC365FC22/A8A3EC5B-F1DC-49E3-81B8-BB1E9B272E68.png]](https://code84.com/wp-content/uploads/2022/10/20210127212852405.png)
- 设置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文件,右键显示内容,打开方式选择终端。如果默认的推荐程序没有终端,需要在界面的下方选择所有程序。![[image:3E1E7A17-4339-4352-B8B2-176CE1EA1EDD-858-000000C9DDB79599/A8C701E1-7ACB-4A7F-A300-B26808C1ED03.png]](https://code84.com/wp-content/uploads/2022/10/2021012721291318.png)
打开系统偏好,选择用户与群组,选择登陆项,添加shell脚本文件。![[image:DF9CCDA5-9B43-4659-8BDE-0664D5849D0A-858-000000CB2C7FA75B/925D646D-9134-4D2D-80FE-6498F29FA67D.png]](https://code84.com/wp-content/uploads/2022/10/20210127212930894.png)
- jupyter notebook 服务的常用命令
开启notebook服务
jupyter notebook
查看当前已开启的notebook服务
jupyter notebook list
后台开启notebook服务
nohup jupyter notebook
终止某个端口号的notebook服务
jupyter notebook stop 端口号