非pipadmin用户引用pipadmin的PYTHONUSERBASE运行ipython报错ModuleNotFoundError
跨用户访问PYTHONUSERBASE中IPython报错ModuleNotFound的解决办法
问题根源
大概率是权限问题或者Python路径配置不全:
- pipadmin安装IPython时,PYTHONUSERBASE下的文件/目录默认只有他自己有读权限,同组用户没法读取模块文件
- 就算配置了PYTHONUSERBASE,可能没把site-packages目录加到PYTHONPATH里,或者ipython脚本硬编码了pipadmin的Python路径
解决步骤
1. 修复目录/文件权限(需要pipadmin操作)
先检查当前权限:
# 查看PYTHONUSERBASE根目录权限 ls -ld /home/pipadmin/local/pythonbase # 查看site-packages目录权限(替换X.X为实际Python版本,比如3.8) ls -ld /home/pipadmin/local/pythonbase/lib/pythonX.X/site-packages
如果组权限是r--或者无相关权限,执行以下命令开放组读和执行权限:
chmod -R g+rx /home/pipadmin/local/pythonbase
为了避免后续安装的文件再出现权限问题,pipadmin可以设置umask让新文件默认开放组权限:
umask 002
2. 确保另一个用户的Python路径配置正确
除了设置PYTHONUSERBASE,还要把site-packages目录加到PYTHONPATH:
# 替换X.X为实际Python版本 export PYTHONUSERBASE=/home/pipadmin/local/pythonbase export PYTHONPATH="$PYTHONUSERBASE/lib/pythonX.X/site-packages:$PYTHONPATH"
另外可以检查ipython脚本的shebang行,看是不是硬编码了pipadmin的Python路径:
cat /home/pipadmin/local/pythonbase/bin/ipython
如果第一行是#!/home/pipadmin/.local/bin/python这类,改成系统通用的Python路径(比如#!/usr/bin/python3)或者另一个用户能访问的Python路径。
3. 验证
另一个用户重新执行ipython,应该就能正常启动了。
内容的提问来源于stack exchange,提问作者KibbleOrSoft
相关产品推荐
相关产品推荐

