UV Workspaces环境下出现ModuleNotFoundError:无法找到myLib模块的问题求助
UV Workspaces环境下出现ModuleNotFoundError:无法找到myLib模块的问题求助
我来帮你排查这个问题,看起来是你的内部库myLib没有被正确安装或识别,导致myApp无法导入它。咱们一步步来解决:
第一步:完善myLib的pyproject.toml配置
你的myLib目录下虽然有pyproject.toml,但大概率缺少关键的包声明配置,导致UV无法将它识别为可导入的Python包。请修改lib/myLib/pyproject.toml,确保[project]部分包含以下内容:
[project] name = "myLib" # 必须和你要导入的模块名完全一致 version = "0.1.0" # 声明要包含的包,二选一即可 packages = ["myLib"] # 手动指定包名 # 或者让工具自动查找包(适合有__init__.py的情况) # packages = { find = {} }
第二步:用UV工作区命令重新安装依赖
之前的uv pip install .不是最适合工作区场景的命令,建议用UV的工作区同步命令来确保所有内部包被正确链接:
# 先创建并激活虚拟环境(如果还没做) uv venv source .venv/bin/activate # macOS/Linux系统,Windows则是 .venv\Scripts\activate # 同步工作区内所有依赖,自动处理内部包的关联 uv sync
uv sync会自动识别[tool.uv.workspace]里的成员,把myApp和myLib以可编辑模式安装,这样本地修改会实时生效。
第三步:正确运行myApp的脚本
不要直接用uv python run,而是在激活虚拟环境后,用以下方式运行:
# 从项目根目录运行 uv run python apps/myApp/main.py # 或者切换到myApp目录运行 cd apps/myApp python main.py
这样能确保脚本在正确的虚拟环境上下文里执行,找到已安装的myLib模块。
第四步:验证安装状态
激活虚拟环境后,运行pip list,查看输出里是否有myLib和myApp,并且它们的Location路径指向你本地的项目目录,这说明它们已被正确安装为可编辑包。
另外补充一点:你的根目录pyproject.toml里的依赖其实可以简化,因为已经配置了UV工作区,不需要手动写file://路径,直接写成:
dependencies = [ "myApp", "myLib" ]
UV会自动从工作区成员中解析这些依赖。
内容来源于stack exchange
相关产品推荐
相关产品推荐

