使用 Pipenv 在 Jupyter 中出现 ModuleNotFoundError

use*_*004 5 python jupyter jupyter-notebook pipenv

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

问题是我ModuleNotFoundError在 Jupyter 上得到了多个不同的包,包括 Pandas 和 Requests(但奇怪的是,BeautifulSoup并且CSV工作正常。)

以下是我启动新 Jupyter 文件的方法:

  • 创建一个新目录
  • 使用以下命令安装 jupyter 和 pandas:pipenv install jupyter pandas
  • 激活虚拟环境:pipenv shell
  • 启动 Jupyter:jupyter 笔记本
  • 创建新的 Python 3 笔记本
  • 此时,我尝试类似的命令import pandas as pd并取回ModuleNotFoundError.

我使用的是Python 3.6.5版本。

尝试修复此问题但失败了:

  • 使用 pip graph 仔细检查 pandas 是否安装在我的虚拟环境中
  • 创建了全新的目录 pipenv install jupyter pandas --skip-lock

  • 使用以下命令卸载系统范围内的所有内容:

pip freeze > requirements.txt
pip uninstall -r requirements.txt -y
Run Code Online (Sandbox Code Playgroud)
  • 更新了熊猫
  • 使用virtualenv代替pipenv
virtualenv first-python-notebook
cd first-python-notebook
cd Scripts
activate
cd ..
pip install jupyter pandas
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助将不胜感激。请附上详细说明,因为我是初学者。

the*_*edd 5

如果您在 jupyter 中收到“ModuleNotFoundError:没有名为 xxyyzz 的模块”,但可以通过 pipelinev shell 运行 python 来导入该模块(pipenv run python -c "import xxyyzz; print(xxyyzz.__version__)"

  • 这可能是 jupyter 的 python 路径在内核配置文件中没有正确设置:..\jupyter\kernels\<myProjectName>\kernel.json
  • 需要在 pipelinev 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”

这篇文章提供了额外的解释


use*_*004 0

感谢您的建议。然而,我被特别建议不要安装 Anaconda——不太记得原因,但我认为这是因为,基本上,如果我决定要使用其他东西,那么切换将是一个真正的头痛。如果您不同意这一点,我很高兴听到您的推理。

我最终通过卸载虚拟环境和更大的计算机系统中的每个软件包,然后在两个地方重新安装来解决了这个问题。它有效,但我有点困惑,如果我仍然需要将所有内容安装两次,那么虚拟环境的意义是什么。