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
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, и поэтому я не надеюсь, что это не сломает что-то еще.

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