Jupyter Notebook中pydrake的ModuleNotFoundError问题求助
虚拟环境中Jupyter无法导入pydrake的问题排查与解决
问题背景
我在Ubuntu 20.04系统的虚拟环境中通过pip安装了pydrake,操作步骤如下:
$ python3 -m venv drakeEnv $ drakeEnv/bin/pip install --upgrade pip $ drakeEnv/bin/pip install drake $ source env/bin/activate # 注:此处存在拼写错误,应为source drakeEnv/bin/activate (drakeEnv) $ pip install jupyter (drakeEnv) $ pip install ipython (drakeEnv) $ ipython kernel install --name=drakeEnv (drakeEnv) $ jupyter notebook
尽管drakeEnv内核已显示在Jupyter的内核列表中,但运行时仍提示ModuleNotFoundError: No module named 'pydrake'。在drakeEnv环境中执行which jupyter确认未使用全局Jupyter,请问问题出在哪里?
问题原因与解决方法
1. 激活命令拼写错误引发的环境混淆
你第4行的激活命令写错了,本该是source drakeEnv/bin/activate却写成了source env/bin/activate,这会导致两种问题:
- 若系统存在名为
env的虚拟环境,你会激活错误环境并在其中安装jupyter、ipython,后续的内核也会绑定到这个错误环境; - 若没有
env环境,这条激活命令会执行失败,但你后续的安装命令实际是在全局环境中执行的,即便之后手动激活了正确的drakeEnv,之前安装的内核配置已经指向了错误路径。
2. 内核安装未绑定当前虚拟环境路径
执行ipython kernel install --name=drakeEnv时,默认会将内核安装到全局路径,但内核配置里的Python解释器路径可能并未指向drakeEnv的Python,导致运行时调用的环境没有安装pydrake。
具体解决步骤
- 清理错误内核
先删除已安装的错误内核:jupyter kernelspec remove drakeEnv - 激活正确的虚拟环境
source drakeEnv/bin/activate - 重新安装内核并绑定当前环境
在激活的drakeEnv环境中执行以下命令,确保内核使用当前环境的Python解释器:python -m ipykernel install --user --name=drakeEnv --display-name "Python (drakeEnv)" - 验证内核配置(可选)
查看内核配置文件(通常路径为~/.local/share/jupyter/kernels/drakeEnv/kernel.json),确认argv字段指向drakeEnv的Python路径,示例如下:
如果路径不符,手动修改为正确的虚拟环境Python路径即可。{ "argv": [ "/home/你的用户名/drakeEnv/bin/python", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "Python (drakeEnv)", "language": "python" }
内容的提问来源于stack exchange,提问作者drC1Ron
相关产品推荐
相关产品推荐

