【问题标题】:Jupyter notebook not recognizing packages in venvJupyter notebook 无法识别 venv 中的包
【发布时间】:2021-04-22 05:32:53
【问题描述】:

这让我发疯了。出于某种原因,我的 .ipynb 文件似乎无法识别我的 venv 中的 python 包。即使我已经明确安装了opencv,我也会收到此错误。对于 dlib 和 imutils,我也遇到了同样的问题。

但是,当我在 save venv 中的常规 .py 文件中使用 opevcv 时,它完全可以正常工作,因此它与 .ipynb(Jupiter Notebooks)有关。

我试过pip3 install opencv-python

注意:我很确定我在运行 .ipynb 文件时选择了正确的 venv。

我在 Jupyter Notebook(包括 opencv-python)中运行 !pip list 时得到的输出:

Package                 Version
----------------------- -------------------
absl-py                 0.12.0
astunparse              1.6.3
cachetools              4.2.1
certifi                 2020.12.5
chardet                 4.0.0
cmake                   3.18.4.post1
cycler                  0.10.0
dlib                    19.22.0
flatbuffers             1.12
gast                    0.4.0
google-auth             1.29.0
google-auth-oauthlib    0.4.4
google-pasta            0.2.0
grpcio                  1.34.1
h5py                    3.1.0
idna                    2.10
imutils                 0.5.4
keras-nightly           2.5.0.dev2021032900
Keras-Preprocessing     1.1.2
kiwisolver              1.3.1
Markdown                3.3.4
matplotlib              3.4.1
numpy                   1.19.5
oauthlib                3.1.0
opencv-python           4.5.1.48
opt-einsum              3.3.0
Pillow                  8.2.0
pip                     21.0.1
protobuf                3.15.8
pyasn1                  0.4.8
pyasn1-modules          0.2.8
pyparsing               2.4.7
python-dateutil         2.8.1
requests                2.25.1
requests-oauthlib       1.3.0
rsa                     4.7.2
setuptools              54.1.2
six                     1.15.0
tensorboard             2.5.0
tensorboard-data-server 0.6.0
tensorboard-plugin-wit  1.8.0
tensorflow              2.5.0rc1
tensorflow-estimator    2.5.0rc0
termcolor               1.1.0
typing-extensions       3.7.4.3
urllib3                 1.26.4
Werkzeug                1.0.1
wheel                   0.36.2
wrapt                   1.12.1

请帮忙,谢谢

【问题讨论】:

  • 您是否将 venv 添加到 notebook 内核中?
  • 是的,我用我的 venv ipython kernel install --user --name=.venv 运行了这个命令
  • pip list cmd可能运行在全局python env中,因为它不是python命令,只是一个shell cmd,你在notebook内核下拉列表中选择了正确的内核吗?跨度>
  • ok,如果你在终端激活venv并打开一个python repl,可以导入cv包吗?可能安装在不正确的环境中

标签: python python-3.x opencv pip jupyter-notebook


【解决方案1】:

也许这个问题会被删除,但这就是为我解决的问题(感谢@Shi XiuFeng):

我最初使用 virtualenv env 创建了我的 venv,但它不起作用,所以当我使用 python3 -m venv env 重新创建 venv 时,它完全正常。

【讨论】:

  • 好吧,不费吹灰之力,python venv 管理总是很难调试。
【解决方案2】:

试试changing kernels。 (查看 URL 中的图像以获取指导)。如果您的 venv 不在列表中,则应手动添加。关注this guide to add your venv

【讨论】:

  • 谢谢,我实际上已经创建了一个新的 venv 并在该 venv 中运行内核,我还应该切换到另一个内核吗?
【解决方案3】:

您使用的是本地计算机吗?你如何启动 jupyter notebook?您可以尝试以下方法:

  1. 打开提示并激活您的虚拟环境。
  2. python 然后>>> import <module>:导入了吗?

确保您已在该环境中安装了 jupyter,然后

  1. 打开提示并激活您的虚拟环境。
  2. 问题python -m jupyter notebook

【讨论】:

  • 是的,第一部分有效,当我进入我的 venv 并在 shell 中运行 python 时,我可以导入 cv2 没问题。对于第二部分,当我运行python -m jupyter notebook 时,我得到venv/bin/python: No module named jupyter,我错过了什么吗?我需要安装 Jupiter 吗?
  • 但是,我可以运行 jupyter notebook 本身来启动服务器而不会出现任何错误
  • 是的,您必须在 venv 中安装 jupyter,然后从该 venv 中启动 jupyter notebook。激活你的venv,然后python -m pip install jupyter,然后python -m jupyter notebookpython -m 部分将提供的模块作为脚本运行。根据我使用 conda 的经验,它消除了模块的许多问题。例如,如果没有它,您可能会 jupyter notebook 并最终从您的(基本)环境中获得一个 jupyter 内核。
猜你喜欢
  • 2020-06-13
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
相关资源
最近更新 更多