Jupyter не работает после понижения версии Python (не Conda)

Есть нить о том, как заставить Jupyter правильно связываться после понижения версии Python, но это относится к установке Conda. Моя мотивация к понижению версии Python заключается в том, что TensorFlow не работает на Python 3.7.

После удаления Jupyter и перехода на более раннюю версию Python я получаю эту ошибку.

/usr/local/bin/jupyter: /usr/local/Cellar/jupyter/1.0.0_5/libexec/bin/jupyter: /usr/local/opt/python/bin/python3.7: bad interpreter: No such file or directory
/usr/local/bin/jupyter: line 2: /usr/local/Cellar/jupyter/1.0.0_5/libexec/bin/jupyter: Undefined error: 0

Как правильно связать Jupyter и Python для правильной работы?

Спасибо, Накул

Какая-то конкретная ОС?

jtlz2 20.09.2019 08:25
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
1 633
3

Ответы 3

Сначала попробуйте удалить блокнот jupyter:

brew uninstall jupyter (если вы на Mac)

или python3 -m pip uninstall jupyter

затем принудительно переустановите jupyter:

python3 -m pip install jupyter --force

Сначала перейдите к cd /usr/local/bin/, где хранится jupyter.

Это вы делаете, набрав nano jupyter notebook

#!/usr/local/opt/python/bin/python3.7
# -*- coding: utf-8 -*-
import re
import sys

from jupyter_core.command import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Тогда вам нужно перейти с #!/usr/local/opt/python/bin/python3.7 на #!/usr/local/opt/python/bin/python3.6

Вот как я это исправил.

macOS:

Если вы получили Jupyter от brew, вы можете:

brew link --overwrite jupyter

Это перезапишет ваш /usr/local/bin/jupyter с символической ссылкой на ../Cellar/jupyter/1.0.0_5/bin/jupyter

В моей установке этот файл теперь выглядит как

#!/bin/bash
JUPYTER_PATH = "/usr/local/etc/jupyter" PYTHONPATH = "/usr/local/Cellar/jupyter/1.0.0_5/libexec/lib/python3.7/site-packages:/usr/local/Cellar/jupyter/1.0.0_5/libexec/vendor/lib/python3.7/site-packages" exec "/usr/local/Cellar/jupyter/1.0.0_5/libexec/bin/jupyter" "$@"

а не ранее

#!/usr/local/Cellar/python/3.6.4_2/bin/python3.6

# -*- coding: utf-8 -*-
import re
import sys

from jupyter_core.command import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Это решило вашу точную проблему для меня.

Я уверен, что это рискует столкнуться с окружением conda, и поэтому я не надеюсь, что это не сломает что-то еще.

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