ModuleNotFoundError при доступе к python Flask в блокноте jupyter в виртуальной среде - PullRequest
0 голосов
/ 11 апреля 2020

Я создал виртуальный env gcloudenv на моем nividia nano под управлением Ubuntu. Мне удалось успешно установить flask, необходимые библиотеки и развернуть мой appengine в GCP из этого виртуального окружения. Вся моя работа находится в python, и я использовал nano в качестве редактора для запуска и запуска моего кода. Никаких проблем пока нет.

В моем виртуальном окружении gcloudenv уже есть все необходимые пакеты для flask, jinga et c, и я вижу их, когда запускаю pip freeze.

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

Я уже установил ноутбук Jupyter перед созданием виртуальной среды. Я также установил Jupyter внутри в виртуальной среде. Поэтому я следовал инструкции по созданию нового ядра, выполнив следующую команду: -

  (gcloudenv) sunny@my-nano:~gcloudenv/MyApp/mainfolder$ pip install ipykernel
  (gcloudenv) sunny@my-nano:~gcloudenv/MyApp/mainfolder$ ipython kernel install --user -- 
  name=gcloudenv

Теперь я запустил ноутбук как:

      (gcloudenv) sunny@my-nano:~gcloudenv/MyApp/mainfolder$ 
       /home/gcloudenv/bin/jupyter notebook

При попытке импортировать flask Я получаю следующую ошибку: ModuleNotFoundError: Нет модуля с именем 'flask'

Обратите внимание, что происходит, когда меня отключают.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Наконец мне удалось решить мою проблему. Благодаря замечательному сообщению https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/.

По сути, у меня было 2 проблемы: - 1. У меня не было блокнота-ноутбука в моей виртуальной среде. Первоначально я думал, что это было установлено, но это было неправильно. поэтому всякий раз, когда я пытался запустить один, он выбирал первый блокнот Jupyter, который мог найти на пути. Хороший способ выяснить, на что он указывает, это выполнить какую команду

   (gcloudenv) sunny@my-nano:~/gcloudenv$ which jupyter-notebook

Для меня это было по адресу:

    /home/sunny/archiconda3/bin/jupyter-notebook

У меня было фактически 3 копии Jupyter-ноутбук в моей системе. Один из них, вероятно, был установлен с помощью sudo pip и поэтому попал в папку root. Наверное, не очень хорошая вещь.

Итак, я установил fre sh jupyter-notebook с помощью следующей команды: -

   (gcloudenv) $ pip install jupyter notebook 

2. Далее нужно проверить список доступных ядер Jupyter, выполнив следующее из jupyter notebook (или из командной строки):

            !jupyter kernelspec list (OR (gcloudenv) $jupyter kernelspec list

Мой блокнот jupyter не смог импортировать библиотеки flask, так как он указывал на неверную конфигурацию ядра вне моего virtualenv gcloudenv.

        Available kernels:
        gcloudenv    /home/sunny/.local/share/jupyter/kernels/gcloudenv ( correct one)
        python3      /home/sunny/gcloudenv/share/jupyter/kernels/python3

Вы можете определить, какую версию python он выбирает, выполнив 'more' над файлом: -

           (gcloudenv) $ 
           /more/home/sunny/.local/share/jupyter/kernels/gcloudenv/kernel.json 

Как только я изменил свое ядро, указав на python3 из записной книжки он выбрал правильный путь и все нужные мне библиотеки.

В итоге, когда вы столкнетесь с проблемой, как указано выше, сделайте следующее: -

  • проверьте путь python (где python или какой python)
  • проверьте, используете ли вы «правильный» блокнот. Это определяется путем, и если вы выбрали ваш virtualenv.
  • Установите ноутбук jupyter, используя pip из вашего virtualenv (не используйте sudo)
  • Проверьте ядро ​​Jupyter. Это может быть особенно актуально, если у вас есть обычный ноутбук Jupyter и вы хотите работать с несколькими virtualenv.
0 голосов
/ 12 апреля 2020

Добавьте

!pip install flask

в начале вашего ноутбука Jupyter.

...