Есть нить о том, как заставить 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 для правильной работы?
Спасибо, Накул
Сначала попробуйте удалить блокнот 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
, и поэтому я не надеюсь, что это не сломает что-то еще.
Какая-то конкретная ОС?