理解并解决jupyter notebook中import失败的问题

理解并解决jupyter notebook中import失败的问题

jupyter中import失败的原因分析和解决

linux环境下,jupyter在使用中常出现import失败的问题,比如很多人都遇到过的matplotlib的import失败,提示无法找到matplotlib。

问题产生的原因

jupyter的使用中,很多人会另外新建一个用户,然后启动jupyter服务。但是不同用户能访问的目录是会有所区别的,而用旧用户pip或conda安装的python包如果是安装在旧用户的主目录下的话,那么新用户一般就访问不了。
举例来说,原有的旧用户是user1,如果新建用户user2用于启动jupyter服务。原本使用的有些python包不是安装在/usr/local下,而是/home/user1/.local/lib/目录下,这些包在user1目录下user2是无法访问的,user2启动的jupyter自然也无法import这些包。

解决方法

解决思路就是使得想要import的包使得user1能访问,具体方法可以有3种,推荐第一种方法,比较简单:

  1. 删除user1主目录下的包,然后使用sudo重新安装到/usr/local下。
    需要先卸载的原因是,直接用user1用户sudo安装不了,提示包已经安装。不过如果使用新用户user2来sudo安装,可能可行。
pip uninstall package_name # 卸载原来安装的包
sudo pip install package_name==version_number 
# 最好指定原版本号,防止其他地方用到,版本变了可能别的地方运行会出错。
# 最后需要 notebook网页上重启jupyter服务,才能应用更改。
  1. 重新建一个虚拟环境,然后安装需要的包,再添加虚拟环境作为jupyter运行的核。csdn上有很多博客都是用这个方法的,比如这个博客 jupyter notebook中matplotlib无法import的问题。这里只给出关键的代码,具体操作可以具体百度,或者csdn其他博客里的方法。这种方法算比较安全,但也比较繁琐。
conda activate siammask
pip install jupyter
pip install matplotlib
sudo /home/anna/miniconda3/envs/siammask/bin/python -m ipykernel install --name siammask
  1. 这种方法我没验证过,应该可行,可以直接将新用户无法访问的目录的权限改成公开。这种方法虽然非常简单,但是权限会混乱些。
chmod 755 /home/user1/.local/lib/python
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值