You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Apache服务器运行Python脚本时遇ModuleNotFoundError: No module named 'boto3'

解决Apache下Python脚本无法找到boto3的问题

问题核心是执行环境不一致:命令行用的是登录用户(如ec2-user)的Python环境,而Apache运行CGI脚本时使用的是www-data(或apache)系统用户,两个环境的依赖包路径不共享。你通过pip3 install --user boto3安装的包仅属于登录用户,Apache用户无法访问。

以下是针对性解决方案:

方案1:给Apache用户的Python环境安装boto3

直接为Apache运行用户安装boto3,确保包在其可访问路径内:

  • 执行命令:sudo -u www-data pip3 install boto3

方案2:修正site-packages路径并授权

你当前指定的/.local/lib/python3.10/site-packages路径错误,应该指向登录用户的home目录下的.local路径(假设登录用户为ec2-user):

  1. 修改脚本中的路径:
import site
site.addsitedir('/home/ec2-user/.local/lib/python3.10/site-packages')
  1. 赋予Apache用户读取该目录的权限:
    sudo chmod -R o+rX /home/ec2-user/.local/lib/python3.10/site-packages

方案3:使用虚拟环境隔离依赖

创建独立的虚拟环境,避免环境冲突:

  1. 在网站目录下创建虚拟环境:
    python3 -m venv /var/www/html/venv
  2. 激活环境并安装boto3:
    source /var/www/html/venv/bin/activate && pip install boto3
  3. 修改脚本的shebang行,指向虚拟环境的Python解释器:
#!/var/www/html/venv/bin/python3
  1. 确保Apache用户拥有虚拟环境目录的权限:
    sudo chown -R www-data:www-data /var/www/html/venv

额外检查项

  • 确认脚本shebang行的Python路径与命令行一致:执行which python3获取路径,替换脚本开头的#!/usr/bin/python3。
  • 检查Apache的CGI配置,确保允许执行Python脚本:在apache2.conf或虚拟主机配置中添加/确认以下内容:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    Require all granted
    AddHandler cgi-script .py
</Directory>

内容的提问来源于stack exchange,提问作者Jack Scallan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:48:35