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

Mac M1环境下虚拟环境selenium找不到,sudo运行正常的原因

问题分析与解决

问题场景

我在Mac M1设备上,项目根目录下的app.py代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time

driver = webdriver.Chrome(service= Service(ChromeDriverManager().install()))

url = "https://www.naver.com/"
driver.get(url)
time.sleep(5)

执行了以下操作创建虚拟环境并安装依赖:

  • python -m venv venv
  • . venv/bin/activate
  • pip install selenium
  • pip install webdriver_manager

但运行python app.py时出现错误:

(venv) [~/Desktop/leetcode-auto-bookmark]$ python app.py
Traceback (most recent call last):
  File "/Users/obzva/Desktop/leetcode-auto-bookmark/app.py", line 1, in <module>
    from selenium import webdriver
ModuleNotFoundError: No module named 'selenium'

尝试过检查Python与pip版本匹配、升级pip、重新安装依赖均无效,使用sudo python app.py可正常运行,且python --version与sudo python --version版本一致。

核心原因

  1. 虚拟环境权限不足
    Mac M1的桌面目录受系统隐私保护机制限制,普通用户身份下,虚拟环境的pip无法将依赖包写入到虚拟环境的site-packages目录,导致依赖实际没安装成功。而sudo以root身份运行时,绕过了目录权限限制,但此时调用的是系统全局Python环境(而非虚拟环境),全局环境中已存在selenium依赖,所以能正常运行。

  2. 虚拟环境激活后pip与python不对应
    虽然虚拟环境显示已激活,但可能pip并未指向虚拟环境内的pip(比如系统默认用pip3而你用了pip),导致依赖被安装到了全局环境而非虚拟环境。

解决步骤

  1. 验证虚拟环境的pip路径
    激活虚拟环境后,执行以下命令查看pip路径:
which pip

正常输出应为~/Desktop/leetcode-auto-bookmark/venv/bin/pip,如果不是,说明虚拟环境未正确激活,或者需要使用pip3替代pip。

  1. 修复项目目录权限
    给项目目录添加足够的读写权限:
chmod -R 755 ~/Desktop/leetcode-auto-bookmark

然后重新激活虚拟环境并重新安装依赖:

. venv/bin/activate
pip install selenium webdriver_manager
  1. 检查虚拟环境依赖是否安装成功
    进入虚拟环境的site-packages目录查看是否存在selenium文件夹:
ls venv/lib/python*/site-packages | grep selenium

如果能看到selenium相关文件,说明安装成功,此时运行python app.py即可正常执行。

  1. 禁止使用sudo运行
    sudo会使用全局Python环境,长期使用会污染全局依赖,务必使用虚拟环境内的Python解释器运行代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:33:29