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

使用uv与py-shiny时外部依赖模块找不到的问题求助

问题:uv管理依赖时,uvx shiny run无法找到已安装的numpy模块

问题重现

  1. 初始化项目并安装依赖:
uv init shiny-tester
cd shiny-tester
uv add shiny
  1. 创建app.py(初始内容运行正常):
from shiny import App, reactive, render, ui

# 后续会用到
# import numpy

app_ui = ui.page_fluid(
    ui.input_action_button("action_button", "Action"),  
    ui.output_text("counter"),
)

def server(input, output, session):
    @render.text()
    @reactive.event(input.action_button)
    def counter():
        return f"{input.action_button()}"

app = App(app_ui, server)
  1. 运行uvx shiny run,应用正常启动。
  2. 取消app.py中import numpy的注释,执行uv add numpy无报错,但再次运行uvx shiny run时出现报错:
File "/mnt/c/Users/david/Desktop/shiny-tester/app.py", line 2, in <module>
    import numpy
ModuleNotFoundError: No module named 'numpy'
  1. 但执行uv run python后,在交互环境中import numpy可以正常导入。

原因分析

uvx和uv run的执行逻辑存在差异:

  • uvx默认会跳过当前项目的虚拟环境,直接调用全局环境中安装的shiny命令,因此无法访问项目依赖里的numpy。
  • uv run则是在当前项目的虚拟环境中执行指定命令,能正确加载pyproject.toml中声明的所有依赖包。

解决方法

有两种可行的解决方式:

方式一:用uv run替代uvx

直接在项目环境中运行shiny命令:

uv run shiny run

方式二:让uvx使用当前项目环境

通过--project参数指定uvx加载当前项目的依赖:

uvx --project shiny run

版本信息

  • uv版本:uv 0.4.17
  • pyproject.toml依赖配置:
[project]
name = "shiny-tester"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "numpy>=2.1.1",
    "shiny>=1.1.0",
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:35:56