带有 pipenv 的 Jupyter 中的 ModuleNotFoundError

ModuleNotFoundError in Jupyter with pipenv

这个周末我参加了 Python 新兵训练营,但由于这个问题,我什至无法在计算机上使用 Python。我所有的导师也都被难住了。

问题是我在 Jupyter 上得到了 ModuleNotFoundError 和多个不同的包,包括 Pandas 和请求(但奇怪的是,BeautifulSoupCSV 工作正常.)

以下是我如何开始一个新的 Jupyter 文件:

我正在使用 Python 版本 3.6.5。

尝试解决此问题但失败:

pip freeze > requirements.txt
pip uninstall -r requirements.txt -y
virtualenv first-python-notebook
cd first-python-notebook
cd Scripts
activate
cd ..
pip install jupyter pandas

我测试了当我在命令 shell 中使用 python 时可以导入 pandas(是的)——在 Jupyter 上仍然不起作用。

我的导师认为问题是系统范围的包干扰了虚拟包,但我们已经工作了几个小时,无法弄清楚如何解决这个问题。

如有任何帮助,我们将不胜感激。由于我是初学者,请附上详细说明。

你为什么不尝试用 Anaconda 虚拟环境安装 ipykernel? 它会更容易处理。

如果你之前没有用过Anaconda,直接去官网看看 https://www.anaconda.com/download/ 并为您的 OS 下载最新版本。 然后,按照以下步骤操作。

  1. 执行 Anaconda 提示。
  2. 类型'conda create -y -n $ENVIRONMENT_NAME ipykernel'
  3. 输入'conda activate $ENVIRONMENT_NAME'
  4. 类型'conda install -y $PACKAGES_TO_BE_INSTALLED'
  5. 类型'python -m ipykernel install --user --name $NAME --display-name $IPYKERNEL_NAME'

此 ipykernel 名称将显示在您的 jupyter notebook 中的内核列表中。 您可以通过键入 jupyter kernelspec list.

来查找已安装内核的列表

希望对您有所帮助!

感谢您的建议。但是,有人特别建议我不要安装 Anaconda——不太记得原因了,但我认为这是因为,基本上,如果我决定要使用其他东西,那么切换起来真的很头疼。如果您不同意,我很高兴听到您的推理。

我最终通过卸载虚拟环境和大型计算机系统中的所有软件包,然后在这两个地方重新安装来解决了这个问题。它有效,但我对虚拟环境的意义有点困惑,如果我仍然必须安装所有东西两次的话。

如果您在 jupyter 中获得 'ModuleNotFoundError: No module named xxyyzz',但是可以通过 pipenv shell 运行 python 导入模块(pipenv run python -c "import xxyyzz; print(xxyyzz.__version__)"

  • 可能是 jupyter 的 python 路径在内核配置文件中设置不正确:..\jupyter\kernels\<myProjectName>\kernel.json
  • 需要在 pipenv 中创建内核 shell 以选择正确的路径

使用全新的 pipenv 安装:

  1. pip install pipenv
  2. cd <project directory>
  3. export PIPENV_VENV_IN_PROJECT=1 # creates .venv in project directory
  4. pipenv --python=/path/to/python --site-packages # use python executable for your system or environment
  5. pipenv shell # work in project's virtual environment
  6. python -m ipykernel install --user --name=<myProjectName> # create jupyter kernel for project
  7. exit # exit project's virtual environment
  8. pipenv run jupyter notebook # start jupyter from project directory
  9. 在jupyter中,选择内核"myProjectName"

this post provides additional explanations