Ubuntu20.04中Python脚本添加numpy路径仍报错的排查与解决
问题分析与解决:Ubuntu 20.04 Python脚本添加numpy路径后导入失败
问题背景
在Ubuntu 20.04服务器上运行路径为/var/www/html/myfoo.py的Python脚本时,需要使用位于/home/namae/.local/lib/python3.8/site-packages的numpy模块。通过sys.path.append添加该路径后,导入numpy仍触发No module named 'numpy'错误。
排查过程记录
- 尝试conda相关解决方案未成功
- 当前Python解释器路径:
sys.executable输出为/usr/bin/python3 - 在工作目录执行
ls -lsa $(which python),返回结果:4 -rw-r--r-- 1 root root 123 Apr 26 00:53 myfoo.py
问题根源分析
从排查结果来看,$(which python)指向了当前目录下的myfoo.py而非系统Python解释器,说明脚本执行时可能调用了错误的执行入口;此外,服务器进程(如www-data用户)可能没有读取/home/namae/.local目录下文件的权限,导致添加的路径无法被识别。
已验证的解决方法
通过直接复制numpy模块到脚本所在目录解决了问题,执行命令:
sudo cp /home/namae/.local/lib/python3.8/site-packages/numpy* /var/www/html/
更规范的替代方案(可选)
若不想复制文件,可尝试以下方式:
- 指定正确的Python解释器:在脚本首行添加正确的shebang:
并赋予脚本执行权限:#!/usr/bin/python3chmod +x /var/www/html/myfoo.py - 设置PYTHONPATH环境变量:执行脚本前先配置环境变量:
export PYTHONPATH="/home/namae/.local/lib/python3.8/site-packages:$PYTHONPATH" python3 /var/www/html/myfoo.py - 调整目录权限:确保服务器进程有权限读取numpy所在目录:
sudo chmod -R o+r /home/namae/.local/lib/python3.8/site-packages/numpy
内容的提问来源于stack exchange,提问作者ONamaeWa
相关产品推荐
相关产品推荐

