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

Ubuntu下运行Python应用遇tornado模块缺失及pip3.8错误求助

问题分析与解决方案

问题场景

1. 应用运行时的ModuleNotFoundError

执行./app.py时抛出tornado模块找不到的错误:

Traceback (most recent call last):
  File "./app.py", line 32, in <module>
    from pushservices.bootstrap import init_messaging_agents
  File "/home/airnotifier/airnotifier/pushservices/bootstrap.py", line 2, in <module>
    from .apns import *
  File "/home/airnotifier/airnotifier/pushservices/apns.py", line 5, in <module>
    from util import json_encode
  File "/home/airnotifier/airnotifier/util.py", line 37, in <module>
    import tornado
ModuleNotFoundError: No module named 'tornado'

2. 安装tornado后的pip错误日志

执行python3 -m pip install tornado后,提示tornado已安装,但出现pip日志错误:

Requirement already satisfied: tornado in /usr/local/lib/python3.8/dist-packages (6.0.3)

随后的错误日志:

--- Logging error ---
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/utils/logging.py", line 177, in emit
    self.console.print(renderable, overflow="ignore", crop=False, style=style)
  File "/usr/local/lib/python3.8/dist-packages/pip/_vendor/rich/console.py", line 1752, in print
    extend(render(renderable, render_options))
  File "/usr/local/lib/python3.8/dist-packages/pip/_vendor/rich/console.py", line 1390, in render
    for render_output in iter_render:
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/utils/logging.py", line 134, in __rich_console__
    for line in lines:
  File "/usr/local/lib/python3.8/dist-packages/pip/_vendor/rich/segment.py", line 245, in split_lines
    for segment in segments:
  File "/usr/local/lib/python3.8/dist-packages/pip/_vendor/rich/console.py", line 1368, in render
    renderable = rich_cast(renderable)
  File "/usr/local/lib/python3.8/dist-packages/pip/_vendor/rich/protocol.py", line 36, in rich_cast
    renderable = cast_method()
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/self_outdated_check.py", line 130, in __rich__
    pip_cmd = get_best_invocation_for_this_pip()
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/utils/entrypoints.py", line 58, in get_best_invocation_for_this_pip
    if found_executable and os.path.samefile(
  File "/usr/lib/python3.8/genericpath.py", line 101, in samefile
    s2 = os.stat(f2)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.8'
Call stack:
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.8/dist-packages/pip/__main__.py", line 31, in <module>
    sys.exit(_main())
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main
    self.handle_pip_version_check(options)
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check
    pip_self_version_check(session, options)
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check
    logger.info("[present-rich] %s", upgrade_prompt)
  File "/usr/lib/python3.8/logging/__init__.py", line 1446, in info
    self._log(INFO, msg, args, **kwargs)
  File "/usr/lib/python3.8/logging/__init__.py", line 1589, in _log
    self.handle(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 1599, in handle
    self.callHandlers(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 1661, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 954, in handle
    self.emit(record)
  File "/usr/local/lib/python3.8/dist-packages/pip/_internal/utils/logging.py", line 179, in emit
    self.handleError(record)
Message: '[present-rich] %s'
Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),)

原因分析

  1. tornado模块找不到的核心原因:运行应用的Python环境与安装tornado的Python环境不一致。python3 -m pip安装的tornado位于/usr/local/lib/python3.8/dist-packages,但执行./app.py时使用的Python解释器未指向该环境,导致无法识别已安装的模块。
  2. pip日志错误的原因:pip在版本检查时,尝试查找/usr/bin/pip3.8可执行文件,但该文件不存在,引发FileNotFoundError。这通常是pip安装路径或符号链接配置异常导致的。

解决方案

步骤1:统一Python环境,确保应用能找到tornado

  • 确认运行应用的Python解释器版本:
    查看脚本开头的shebang行(格式为#!/usr/bin/pythonX或#!/usr/bin/env pythonX),或执行:
    which python
    
  • 使用对应版本的pip重新安装tornado,例如应用使用python3.8:
    python3.8 -m pip install tornado
    
  • 或直接用运行应用的Python解释器安装:
    $(which python) -m pip install tornado
    

步骤2:修复pip符号链接问题(解决日志错误)

  • 检查/usr/bin下的pip相关链接:
    ls -la /usr/bin | grep pip
    
  • 若不存在pip3.8,创建符号链接指向已安装的pip:
    sudo ln -s /usr/local/lib/python3.8/dist-packages/pip /usr/bin/pip3.8
    
  • 或更新pip到最新版本,自动修复配置:
    python3 -m pip install --upgrade pip
    

步骤3:验证修复效果

  • 重新运行应用:
    ./app.py
    
  • 执行pip命令确认无错误:
    python3 -m pip list
    

内容的提问来源于stack exchange,提问作者Amira Elsayed Ismail

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:54:24