【问题标题】:ModuleNotFoundError in Jupyter with pipenv带有 pipenv 的 Jupyter 中的 ModuleNotFoundError
【发布时间】:2018-10-06 17:01:56
【问题描述】:

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

问题是我在 Jupyter 上获得了 ModuleNotFoundError,其中包含多个不同的包,包括 Pandas 和 Requests(但奇怪的是,BeautifulSoupCSV 工作正常。)

这是我如何启动一个新的 Jupyter 文件:

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

我使用的是 Python 版本 3.6.5。

尝试修复失败:

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

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

pip freeze > requirements.txt
pip uninstall -r requirements.txt -y
  • 更新熊猫
  • 使用 virtualenv 代替 pipenv
virtualenv first-python-notebook
cd first-python-notebook
cd Scripts
activate
cd ..
pip install jupyter pandas

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

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

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

【问题讨论】:

    标签: python jupyter-notebook jupyter pipenv


    【解决方案1】:

    如果您在 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

    【讨论】:

    • 谢谢,这很有帮助。我有一个现有的 pipenv 安装,并且能够按照第 6 步重新启动 jupyter。干杯。
    • 这解决了我的问题,但奇怪的是我现在同时拥有myProjectNamePython 3 (ipykernel)。在ipykernel install 之前我都没有,并且都可以工作。一种修复给了我两种选择。
    【解决方案2】:

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

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

    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 来查找已安装的内核列表。

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-03-14
        • 1970-01-01
        • 2019-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-12
        • 2023-03-31
        相关资源
        最近更新 更多