ModuleNotFoundError в Jupyter с pipenv

В эти выходные я нахожусь в загрузочном лагере Python, но из-за этой проблемы я даже не смог использовать Python на своем компьютере. Все мои инструкторы тоже в тупик.

Проблема в том, что я получаю ModuleNotFoundError на Jupyter с несколькими различными пакетами, включая Pandas и Requests (но, как ни странно, BeautifulSoup и CSV работают нормально.)

Вот как я начинаю новый файл Jupyter:

-Создайте новый каталог -Установите jupyter и pandas с помощью этой команды: pipenv install jupyter pandas -Активируйте виртуальную среду: оболочка pipenv -Запустите Jupyter: jupyter notebook -Создайте новый блокнот Python 3 -В данный момент я пробую команду типа "import pandas" как pd "и получить обратно ModuleNotFoundError.

Я использую Python версии 3.6.5.

Попытки исправить это, которые потерпели неудачу: -двойно проверили, что pandas установлена ​​в моей виртуальной среде с помощью pip graph -создана совершенно новая директория pipenv install jupyter pandas --skip-lock -Установить все в системе с помощью следующих команд: pip freeze > needs.txt pip uninstall -r needs.txt -y -Обновленные панды -Используется virtualenv вместо pipenv virtualenv first-python-notebook cd first-python-notebook CD Сценарии активируют cd .. pip install jupyter pandas Я протестировал, что панды можно импортировать когда я использовал python в командной оболочке (да) - все еще не работал на Jupyter.

Мой преподаватель считает, что проблема заключается в том, что общесистемные пакеты мешают виртуальным, но мы работаем часами и не можем понять, как это исправить.

Любая помощь будет принята с благодарностью. Пожалуйста, включите подробные инструкции, как я начинающий.

2 ответа

Решение

Спасибо за совет. Тем не менее, мне посоветовали не устанавливать Anaconda - не могу вспомнить причину, но я думаю, что это потому, что, если я когда-нибудь решу, что хочу использовать что-то другое, переключиться будет настоящей головной болью. Я рад услышать ваши аргументы, если вы с этим не согласны.

Я решил проблему, удалив каждый пакет как в виртуальной среде, так и в более крупной компьютерной системе, а затем переустановил его в обоих местах. Это сработало, но я немного сбит с толку относительно смысла виртуальной среды, если мне все равно пришлось установить все дважды.

Если вы получаете сообщение "ModuleNotFoundError: Нет модуля с именем xxyyzz" в jupyter, но модуль можно импортировать, запустив python через оболочку pipenv (pipenv run python -c "import xxyyzz; print(xxyyzz.__version__)":

  • вероятно, путь jupyter python неправильно установлен в файле конфигурации ядра: ..\jupyter\kernels\<myProjectName>\kernel.json
  • ядро должно быть создано в оболочке pipenv, чтобы выбрать правильный путь

При новой установке 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"

этот пост содержит дополнительные объяснения

Почему бы вам не попробовать установить ipykernel с виртуальной средой Anaconda? С ним будет легче обращаться.

Если вы ранее не использовали Anaconda, просто перейдите на официальный веб-сайт https://www.anaconda.com/download/ и загрузите новейшую версию для вашей ОС. Затем выполните следующие действия.

  1. Выполните подсказку Анаконды.
  2. Введите 'conda create -y -n $ENVIRONMENT_NAME ipykernel'
  3. Введите 'conda activ $ENVIRONMENT_NAME'
  4. Введите 'conda install -y $PACKAGES_TO_BE_INSTALLED'
  5. Введите 'python -m ipykernel install --user --name $NAME --display-name $IPYKERNEL_NAME'

Это имя ipykernel будет представлено в вашем списке ядер в блокноте jupyter. Вы можете узнать список установленных ядер, набрав jupyter kernelspec list,

Надеюсь это поможет!

Другие вопросы по тегам