conda 下安装jupyter notebook

上一篇因为要安装tensorflow,所以anaconda 安装的是mini 版的,mini版大部分功能都是没有的,相当于装了一个conda的包管理器,然后顺带装了一些包,给大家看看这个mini的安装包的情况。

可以看到相比于完成的anaconda默认自带的150多个包,这个mini 版的只有18个包左右。一些常用的工具比如jupyter notebook也是没有的。只是我比较习惯用conda的包管理了,所以也不纠结是不是可以尝试其他方法装tensorflow了。所以决定安装jupyter notebook了。

conda 安装python35 conda 安装jupyter_anaconda

安装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。
记录下我的详细步骤:

  1. 一开始我选择直接升级conda,发现依然报错
    输入以下命令后:
    conda update —force conda 报错:
RemoveError: ‘setuptools’ is a dependency of conda and cannot be removed from
conda’s operating environment.
  1. 选择先卸载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用户的,这里我决定对整个文件夹的文件都更改为当前用户。

conda 安装python35 conda 安装jupyter_python_02

因为是需要更新site-packages文件夹下的文件,所以一定要先进入到site-packages目录下,执行以下命令,或者这里可以把命令中的./ 当前文件夹改成绝对路径。
sudo chown -R yangli:staff ./ 执行完后可以再看一下权限,就知道是否更新成功了。
4. 然后再重新执行第一步,升级conda,就会发现执行成功了。
5. 最后终于可以进入到安装jupyter notebook的正事当中了
conda install jupyter notebook

激动的心颤抖的手呀,成功了。开心

conda 安装python35 conda 安装jupyter_python_03

  1. 测试验证
    终端输入以下命令,浏览器会弹出notebook的工作目录,就可以开开心心写代码了。
    jupyter notebook

jupyter notebook 配置

jupyter notebook 安装完成后,我习惯改工作目录,设置多个python环境,以及是否开机自动启动之类的设置。接下来就记录下如何去设置这些配置。

  1. 修改notebook的工作目录
    1.1生成notebook的配置文件
    设置配置文件,终端输入以下命令,会提示已将文件写入到xx。这个路径下的config文件就是我们要修改。 这里提醒一下,如果之前生成过config文件了,输入这个命令后,会提示是否需要覆盖原文件,如果选择是,则相当于原文件会被这个默认的文件覆盖,之前原文件上的修改就不在了,所以需要根据自身需求选择是否覆盖。
    jupyter notebook —generate-config

conda 安装python35 conda 安装jupyter_conda 安装python35_04

1.2.修改config文件
打开config文件,vim打开,以下命令修改为第1步的config路径。
vim /Users/xx/.jupyter/jupyter_notebook_config.py

查找c.NotebookApp.notebook_dir = ,vim打开文件后,在命令行模式下,输入/dir 回车,就会查找到(关于vim 常用命令可以在网上搜索)。找到后,将这行的注释去掉,在=后面加上自己想设置的目录,保存修改后退出。

conda 安装python35 conda 安装jupyter_conda 安装python35_05

可以在终端启动notebook看是否设置成功。

2. 将之前我设置的tensorflow虚拟环境增加到jupyter的kernel中

2.1 查看当前已安装的虚拟环境

conda info -e 可以看到目前我有两个,现在决定把tensorflow 加入到kernel中,方便之后的调试工作。

conda 安装python35 conda 安装jupyter_conda 安装python35_06

2.2 激活tensorflow环境

conda activate tensorflow_env 激活后,会在前面显示当前的环境

conda 安装python35 conda 安装jupyter_anaconda_07

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 中了。

conda 安装python35 conda 安装jupyter_tensorflow_08

2.6 删除某一kernel

这里只是删除了配置文件,并没有删除虚拟环境。

jupyter kernelspec remove kernelname 2.7 验证

验证除了上述说的命令行的形式,也可以在notebook下的新建或者new下查看。这样就实现在notebook下随意切换环境了。美美哒

conda 安装python35 conda 安装jupyter_anaconda_09

  1. 设置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文件,右键显示内容,打开方式选择终端。如果默认的推荐程序没有终端,需要在界面的下方选择所有程序。

conda 安装python35 conda 安装jupyter_tensorflow_10

打开系统偏好,选择用户与群组,选择登陆项,添加shell脚本文件。

conda 安装python35 conda 安装jupyter_anaconda_11

  1. jupyter notebook 服务的常用命令
    开启notebook服务
    jupyter notebook 查看当前已开启的notebook服务
    jupyter notebook list 后台开启notebook服务
    nohup jupyter notebook 终止某个端口号的notebook服务
    jupyter notebook stop 端口号