browser-use报错解决ModuleNotFoundError: No module named ‘mem0‘,ValueError: Environment variables not set

browser-use报错解决ModuleNotFoundError: No module named ‘mem0’,ValueError: Environment variables not set。

利用浏览器自动登录各种web系统,结合AI agent 识别验证码、登陆请求接口,实现通用的页面登陆请求,批量登陆系统,可以结合代理实现自动切换IP,设置浏览器头,或者用 agent 调用真实的浏览器完成任务工作,不得不说 AI agent 结合 openai或者deepseek 等模型还是很有智能范儿的,比传统的去写脚本登陆系统实现更加通用智能。

在这里插入图片描述

python3.13 main.py     

INFO [browser_use] BrowserUse logging setup complete with level info
Traceback (most recent call last):
File “/Users/frank/PycharmProjects/browser-use/main.py”, line 2, in
from browser_use import Agent
File “/Users/frank/PycharmProjects/browser-use/browser_use/init.py”, line 6, in
from browser_use.agent.service import Agent as Agent
File “/Users/frank/PycharmProjects/browser-use/browser_use/agent/service.py”, line 26, in
from browser_use.agent.memory.service import Memory, MemorySettings
File “/Users/frank/PycharmProjects/browser-use/browser_use/agent/memory/init.py”, line 1, in
from browser_use.agent.memory.service import Memory, MemorySettings
File “/Users/frank/PycharmProjects/browser-use/browser_use/agent/memory/service.py”, line 12, in
from mem0 import Memory as Mem0Memory
ModuleNotFoundError: No module named ‘mem0’

解决办法:

pip install mem0ai

python3.13 main.py
INFO [browser_use] BrowserUse logging setup complete with level info
INFO [telemetry] Anonymized telemetry enabled. See https://docs.browser-use.com/development/telemetry for more information.
/Users/frank/PycharmProjects/browser-use/browser_use/agent/service.py:306: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
import pkg_resources
INFO [agent] 🧠 Starting an agent with main_model=deepseek-chat, planner_model=None, extraction_model=deepseek-chat
ERROR [agent] Environment variables not set for ChatOpenAI
Traceback (most recent call last):
File “/Users/frank/PycharmProjects/browser-use/main.py”, line 14, in
asyncio.run(main())
~~~~~~~~~~~^^^^^^^^
File “/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/runners.py”, line 195, in run
return runner.run(main)
~~~~~~~~~~^^^^^^
File “/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/runners.py”, line 118, in run
return self._loop.run_until_complete(task)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File “/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/base_events.py”, line 725, in run_until_complete
return future.result()
~~~~~~~~~~~~~^^
File “/Users/frank/PycharmProjects/browser-use/main.py”, line 8, in main
agent = Agent(
task=“识别下面目标网址中的登陆接口及参数、验证码接口及参数、网页中验证码的元素名称以及xpath路径,把这些信息存储到一个本地文件中。目标网址:http://154.83.15.10:82/”,
llm=ChatOpenAI(model=“deepseek-chat”),
)
File “/Users/frank/PycharmProjects/browser-use/browser_use/utils.py”, line 280, in wrapper
result = func(*args, **kwargs)
File “/Users/frank/PycharmProjects/browser-use/browser_use/agent/service.py”, line 209, in init
raise ValueError(‘Environment variables not set’)
ValueError: Environment variables not set

解决办法:

查看 ‘ .env '文件中是否配置了agent 相关的 API KEY ,不能配置错误,要对应的上。

检查 agent 调用的是什么 gpt 模型,默认 openai 是不用怎么配置,直接写入 相关的 API KEY 即可。

这里以 deepseek 举例使用:

api_key_deepseek = SecretStr(os.getenv('DEEPSEEK_API_KEY') or '')

agent = Agent(
        task="识别下面目标网址中的登陆接口及参数、验证码接口及参数、网页中验证码的元素名称以及xpath路径,把这些信息存储到一个本地文件中。目标网址:http://154.83.15.10:82/",
        # llm=ChatOpenAI(model="deepseek-chat"),
        llm=ChatOpenAI(
            base_url='https://api.deepseek.com/v1',
            model='deepseek-chat',
            api_key=api_key_deepseek,
        ),
        browser_context=browser_context,
    )

python3.13 main.py

INFO [browser_use] BrowserUse logging setup complete with level info
INFO [telemetry] Anonymized telemetry enabled. See https://docs.browser-use.com/development/telemetry for more information.
/Users/frank/PycharmProjects/browser-use/browser_use/agent/service.py:306: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
import pkg_resources
INFO [agent] 🧠 Starting an agent with main_model=deepseek-chat, planner_model=None, extraction_model=deepseek-chat
Traceback (most recent call last):
File “/Users/frank/PycharmProjects/browser-use/main.py”, line 59, in
asyncio.run(main())
~~~~~~~~~~~^^^^^^^^
File “/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/runners.py”, line 195, in run
return runner.run(main)
~~~~~~~~~~^^^^^^
File “/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/runners.py”, line 118, in run
return self._loop.run_until_complete(task)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File “/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/base_events.py”, line 725, in run_until_complete
return future.result()
~~~~~~~~~~~~~^^
File “/Users/frank/PycharmProjects/browser-use/main.py”, line 47, in main
agent = Agent(
task=“识别下面目标网址中的登陆接口及参数、验证码接口及参数、网页中验证码的元素名称以及xpath路径,把这些信息存储到一个本地文件中。目标网址:http://154.83.15.10:82/”,
…<6 lines>…
browser_context=browser_context,
)
File “/Users/frank/PycharmProjects/browser-use/browser_use/utils.py”, line 280, in wrapper
result = func(*args, **kwargs)
File “/Users/frank/PycharmProjects/browser-use/browser_use/agent/service.py”, line 207, in init
if llm_api_env_vars and not check_env_variables(llm_api_env_vars):
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File “/Users/frank/PycharmProjects/browser-use/browser_use/utils.py”, line 320, in check_env_variables
return any_or_all(os.getenv(key).strip() for key in keys)
File “/Users/frank/PycharmProjects/browser-use/browser_use/utils.py”, line 320, in
return any_or_all(os.getenv(key).strip() for key in keys)
^^^^^^^^^^^^^^^^^^^^
AttributeError: ‘NoneType’ object has no attribute ‘strip’

解决办法:

“ .env "文件中需要保证 OPENAI_API_KEY 和 DEEPSEEK_API_KEY 都有配置 API KEY,不知道这算不算是一个bug,即使使用 deepseek 也需要配置。

OPENAI_API_KEY=sk-bc8a6eee785a48932d1cbe97
# ANTHROPIC_API_KEY=
# AZURE_ENDPOINT=
# AZURE_OPENAI_API_KEY=
# GEMINI_API_KEY=
DEEPSEEK_API_KEY=sk-bc8a6eee5a4a5b3652d1cbe97

# Set to false to disable anonymized telemetry
ANONYMIZED_TELEMETRY=true

# LogLevel: Set to debug to enable verbose logging, set to result to get results only. Available: result | debug | info
BROWSER_USE_LOGGING_LEVEL=info

# set this to true to optimize browser-use's chrome for running inside docker
IN_DOCKER=false


USER_AGENT environment variable not set, consider setting it to identify your requests.

解决办法:

确保环境变量在脚本运行时生效:
确保在设置环境变量后立即运行脚本。例如,在 Windows 上,你可以在同一个命令提示符窗口中执行以下命令:

set USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
python your_script.py

在 macOS/Linux 上:

export USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
python your_script.py

在脚本中设置环境变量:
确保在脚本的最开始设置环境变量,以确保它在所有导入之前生效:

import os
os.environ["USER_AGENT"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_community.document_loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain_community.embeddings import OpenAIEmbeddings
from langchain_community.llms import OpenAI

os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass("lsv2_pt_f98dbe7435xxxxxxxxx")
model = ChatOpenAI(model="gpt-4")
messages = [
    SystemMessage(content="Translate the following from English into Italian"),
    HumanMessage(content="hi!"),
]
model.invoke(messages)

检查缓存机制:
LangChain 可能有缓存机制,导致环境变量的更新没有立即生效。你可以尝试清除缓存:

from langchain_core.caches import InMemoryCache

cache = InMemoryCache()
cache.clear()

调试环境变量:
在脚本中打印环境变量以确认它们是否正确设置:

import os
print(os.environ.get("USER_AGENT"))

如果这些方法仍然无法解决问题,请确保你没有在其他地方覆盖或清除环境变量,并检查是否有其他代码段影响了环境变量的设置。


AppKit is not available. Make sure you are running this on macOS with pyobjc installed.
INFO [agent] 📍 Step 1
INFO [agent] 📍 Step 1
ERROR [agent] ❌ Stopping due to 3 consecutive failures
:0: RuntimeWarning: coroutine ‘Agent._verify_llm_connection’ was never awaited
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

解决办法:

检查 agent 任务是否存在难以执行的情况,优化任务提示词,检查浏览器版本是否匹配。


完整脚本实现:

import os

from langchain_openai import ChatOpenAI
from pydantic import SecretStr

from browser_use import Agent
import asyncio
from dotenv import load_dotenv

from browser_use.browser.browser import ProxySettings, Browser, BrowserConfig
from browser_use.browser.context import BrowserContext, BrowserContextWindowSize, BrowserContextConfig

load_dotenv()


async def start():
    proxy_settings = ProxySettings(
        server='http://non.existent.proxy:9999', bypass='localhost', username='testuser', password='testpass'
    )
    browser_config = BrowserConfig(
        headless=True,
        proxy=proxy_settings,
    )

    # Create window size with specific dimensions we can check
    window_size = BrowserContextWindowSize(width=1024, height=768)

    # Create browser config with headless mode
    browser_config = BrowserConfig(
        headless=True,  # Use headless for faster test
    )

    # Create context config with our window size
    context_config = BrowserContextConfig(
        browser_window_size=window_size,
        maximum_wait_page_load_time=2.0,  # Faster timeouts for test
        minimum_wait_page_load_time=0.2,
        no_viewport=True,  # Use actual window size instead of viewport
    )

    # Create browser
    browser = Browser(config=browser_config)
    browser_context = BrowserContext(browser=browser, config=context_config)
    api_key_deepseek = SecretStr(os.getenv('DEEPSEEK_API_KEY') or '')

    agent = Agent(
        # task="识别下面目标网址中的登陆接口及参数、验证码接口及参数、网页中验证码的元素名称以及xpath路径,找到登陆界面后遇到表单可以尝试输入测试数据并点击相关的登陆按钮进行请求,分析找到登陆的请求接口和参数,注意不是网页的URL而是直接执行登陆动作请求的后端接口,以及验证码请求接口和参数,打印这些接口信息的时候显示为完整的接口路径,不要用相对路径,把这些信息的完整信息最终结果通过 json 格式进行返回打印展示。目标网址:http://154.83.15.10:82/",
        task="识别下面目标网址中的登陆接口及参数、验证码接口及参数、网页中验证码的元素名称以及xpath路径,找到登陆界面后遇到表单可以尝试输入测试数据并点击相关的登陆按钮进行请求,记录点击登陆的进行的请求接口和参数,如果验证码错误则不在尝试,打印这些接口信息的时候显示为完整的接口路径,不要用相对路径,把这些信息的完整信息最终结果通过 json 格式进行返回打印展示。目标网址:https://ppm.webank.com:13284",
        # llm=ChatOpenAI(model="deepseek-chat"),
        llm=ChatOpenAI(
            base_url='https://api.deepseek.com/v1',
            model='deepseek-chat',
            api_key=api_key_deepseek,
        ),
        use_vision=False,
        # browser_context=browser_context,
    )
    await agent.run()


asyncio.run(start())

完整运行:

INFO     [browser_use] BrowserUse logging setup complete with level info
INFO     [telemetry] Anonymized telemetry enabled. See https://docs.browser-use.com/development/telemetry for more information.
/Users/frank/PycharmProjects/browser-use/browser_use/agent/service.py:306: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  import pkg_resources
INFO     [agent] 🧠 Starting an agent with main_model=deepseek-chat, planner_model=None, extraction_model=deepseek-chat
INFO     [agent] 🚀 Starting task: 识别下面目标网址中的登陆接口及参数、验证码接口及参数、网页中验证码的元素名称以及xpath路径,把这些信息存储到一个本地文件中。目标网址:http://154.83.15.10:82/
INFO     [agent] 📍 Step 1
AppKit is not available. Make sure you are running this on macOS with pyobjc installed.
INFO     [agent] 🤷 Eval: Unknown - The current page is blank, and no interactive elements are available.
INFO     [agent] 🧠 Memory: Starting the task by navigating to the target URL: http://154.83.15.10:82/. This is step 1 out of 100.
INFO     [agent] 🎯 Next goal: Navigate to the target URL to begin analyzing the login and captcha interfaces.
INFO     [agent] 🛠️  Action 1/1: {"go_to_url":{"url":"http://154.83.15.10:82/"}}
INFO     [controller] 🔗  Navigated to http://154.83.15.10:82/
INFO     [agent] 📍 Step 2
INFO     [agent] 👍 Eval: Success - Successfully navigated to the target URL: http://154.83.15.10:82/.
INFO     [agent] 🧠 Memory: Step 1: Navigated to the target URL. Step 2: Identified the '登录' (Login) link. Next goal: Click on the login link to analyze the login interface a captcha elements.
INFO     [agent] 🎯 Next goal: Click on the '登录' link to proceed to the login page.
INFO     [agent] 🛠️  Action 1/1: {"click_element_by_index":{"index":1}}
INFO     [controller] 🖱️  Clicked button with index 1: 登录
INFO     [agent] 📍 Step 3
INFO     [agent] 👍 Eval: Success - Successfully navigated to the login page and identified the login form elements.
INFO     [agent] 🧠 Memory: Step 1: Navigated to the target URL. Step 2: Clicked the login link. Step 3: Identified the login form elements, including username, password, and captcha fields. Next goal: Extract the login interface parameters and captcha details.
INFO     [agent] 🎯 Next goal: Extract the login interface parameters and captcha details.
INFO     [agent] 🛠️  Action 1/1: {"extract_content":{"goal":"Extract the login interface parameters, captcha interface parameters, and the xpath of the captcha element.","should_strip_link_urls":false}}
INFO     [controller] 📄  Extracted from page
: ```json
{
  "login_interface_parameters": {
    "username_field": "账号",
    "password_field": "密码"
  },
  "captcha_interface_parameters": {
    "captcha_image_url": "/user/captcha/image?action=login",
    "action": "login"
  },
  "captcha_element_xpath": {
    "xpath": "//img[contains(@src, '/user/captcha/image')]"
  }
} 

INFO     [agent] 📍 Step 4
INFO     [agent] 👍 Eval: Success - Successfully extracted the login interface parameters, captcha interface parameters, and the xpath of the captcha element.
INFO     [agent] 🧠 Memory: Step 1: Navigated to the target URL. Step 2: Clicked the login link. Step 3: Identified the login form elements. Step 4: Extracted the login interface parameters, captcha interface parameters, and the xpath of the captcha element. Next goal: Save the extracted information to a local file.
INFO     [agent] 🎯 Next goal: Save the extracted information to a local file.
INFO     [agent] 🛠️  Action 1/1: {"done":{"text":"Extracted information:\n- Login interface parameters:\n  - Username field: '账号'\n  - Password field: '密码'\n- Captcha intee parameters:\n  - Captcha image URL: '/user/captcha/image?action=login'\n  - Action: 'login'\n- Captcha element XPath: '//img[contains(@src, '/user/captcha/image')]'","success":true}}
INFO     [agent] 📄 Result: Extracted information:
- Login interface parameters:
  - Username field: '账号'
  - Password field: '密码'
- Captcha interface parameters:
  - Captcha image URL: '/user/captcha/image?action=login'
  - Action: 'login'
- Captcha element XPath: '//img[contains(@src, '/user/captcha/image')]'
INFO     [agent] ✅ Task completed
INFO     [agent] ✅ Successfully

<think>好的,我现在需要帮用户解决Python中的ModuleNotFoundError: No module named 'open_r1'的问题。用户之前提到过类似的错误,比如math_verify和mem0,现在又遇到了open_r1。首先,我得回顾之前的解决步骤,看看有没有可以复用的方法。 用户给出的引用内容中,引用[1]提到安装缺失模块mem0时的问题,可能需要检查环境变量。引用[2]是关于路径和打包的问题,用户可能遇到环境不一致的情况。引用[3]是关于添加自定义路径到sys.path。这些都可能和当前的问题相关。 首先,用户的问题是如何安装缺失的模块open_r1。我需要先判断这个模块是否是第三方库,还是用户自己本地的模块。如果是第三方库,通常可以通过pip安装。但如果是自定义模块,可能需要检查路径或者安装方式。 可能的步骤包括: 1. 确认模块是否存在:检查PyPI是否有open_r1这个包。用户可能拼写错误,比如大小写或者下划线问题。比如,是否应该是open-r1或者openR1? 2. 安装第三方模块:如果存在,使用pip install安装。如果安装失败,可能需要换源,或者检查权限问题,使用--user选项。 3. 检查环境:用户是否在正确的虚拟环境中运行?比如,之前提到的conda或venv环境是否激活,避免全局环境和虚拟环境混淆。 4. 本地模块处理:如果open_r1是本地模块,需要确保路径正确,使用sys.path.append添加路径,或者设置PYTHONPATH环境变量。引用[3]中的例子就是这种情况,用户可能需要将模块所在的目录添加到系统路径中。 5. 模块结构检查:如果是自定义包,检查是否有__init__.py文件,目录结构是否正确,确保可以通过import语句正确导入。 6. 名称拼写:确认代码中的import语句和实际模块名称是否一致,包括大小写和下划线,比如是否应该是open_r1还是openR1。 另外,用户之前解决math_verify问题时提到了使用requirements.txt管理依赖,可能这次也需要类似的步骤,确保环境的一致性。如果用户是在打包或执行脚本时遇到问题,可能需要检查打包工具(如PyInstaller)的配置,确保包含所有依赖模块,如引用[2]中提到的处理方式。 可能的陷阱:用户可能混淆了模块名称的大小写,或者模块实际并未正确安装。比如,PyPI上可能没有open_r1,导致pip install失败,这时候需要用户确认模块来源。如果是内部模块,可能需要从本地安装或设置路径。 还需要考虑用户是否在IDE中运行代码,比如PyCharm,这时候项目的解释器设置可能影响模块的导入。检查IDE中的Python解释器路径是否正确,是否包含所需的模块。 总结步骤:先尝试安装,失败则检查本地模块路径,确认环境,检查拼写和结构,最后考虑打包或环境配置问题。需要一步步引导用户排除可能的原因,给出具体的命令和检查方法。</think>### 解决 `ModuleNotFoundError: No module named 'open_r1'` 的步骤 --- #### 1. **确认模块类型与来源** - **第三方库**:检查 `open_r1` 是否为公开的PyPI包: ```bash pip search open_r1 # 搜索PyPI(若支持) ``` 若存在,直接安装: ```bash pip install open_r1 ``` - **注意**:PyPI上可能无此包,需确认名称是否拼写正确(如 `open-r1` 或 `openR1`)[^1]。 - **本地自定义模块**:若 `open_r1` 是本地开发或内部工具包: - 检查文件路径是否符合Python包结构(需包含 `__init__.py`); - 确保模块目录在Python搜索路径中(参考引用[3])。 --- #### 2. **安装第三方模块** 若确认是PyPI包但名称特殊(如大小写敏感或包含下划线): - 强制安装指定版本: ```bash pip install open-r1==1.0.0 # 假设正确包名为 open-r1 ``` - 解决权限问题: ```bash pip install --user open_r1 # 安装到用户目录 ``` - 从GitHub仓库安装(若包托管在代码平台): ```bash pip install git+https://github.com/username/open_r1.git ``` --- #### 3. **处理本地自定义模块** 若 `open_r1` 是本地代码文件或目录: - **动态添加路径**(在代码中): ```python import sys import os # 假设 open_r1 位于项目根目录的 libs 文件夹下 sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'libs'))) from open_r1 import your_function ``` - **设置环境变量**(长期生效): ```bash # Linux/macOS export PYTHONPATH="/path/to/open_r1_directory:$PYTHONPATH" # Windows set PYTHONPATH=C:\path\to\open_r1_directory;%PYTHONPATH% ``` --- #### 4. **验证环境一致性** - **检查当前Python环境**: ```bash which python # Linux/macOS where python # Windows ``` 确保安装模块的环境与运行脚本的环境一致(如虚拟环境激活状态)[^2]。 - **重建虚拟环境**(若环境混乱): ```bash python -m venv new_env && source new_env/bin/activate # Linux/macOS pip install -r requirements.txt # 重新安装依赖 ``` --- #### 5. **排查模块结构与命名** - **文件结构要求**: ```plaintext project/ ├── open_r1/ # 包目录 │ ├── __init__.py │ └── module.py └── main.py # 导入语句应为 from open_r1.module import func ``` - **检查导入语句**: ```python import open_r1 # 正确(若包名和目录一致) from open_r1 import submodule # 正确 import OpenR1 # 错误(大小写不一致) ``` --- #### 6. **特殊场景处理** - **打包或可执行文件问题**:若使用 `PyInstaller` 等工具打包时出现此错误: - 在打包命令中显式添加模块路径: ```bash pyinstaller --hidden-import=open_r1 --paths=/path/to/open_r1 your_script.py ``` - 参考引用[2]中通过单文件打包规避路径问题。 --- ### 相关问题 1. 如何将本地开发的 `open_r1` 模块打包上传至PyPI供他人使用? 2. 虚拟环境中安装的包为何在脚本运行时仍报 `ModuleNotFoundError`? 3. 如何在代码中动态检测并修复缺失的模块依赖?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码讲故事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值