#bash #powershell #jupyter-notebook #windows-subsystem-for-linux #wsl-2
Вопрос:
Что я хочу сделать, так это создать ярлык для ноутбука Jupyter, который должен работать в WSL (потому что там есть все мои пакеты python). Для этого AFAIK я должен создать скрипт PowerShell, который запускает WSL с командой для запуска ноутбука Jupyter, что-то вроде этого:
wsl -e bash -c "jupyter notebook"
Но эта команда дает bash: jupyter: command not found
, хотя, если я сделаю это шаг за шагом, она запустит Jupyter:
PS C:UsersArtem> wsl
(base) artem@LAPTOP-O4C3S1UK:/mnt/c/Users/Artem$ jupyter notebook
Все протестированные команды страдают от одной из этих проблем:
- bash не может найти команду (ни
jupyter
илиanaconda
) - Какой-то терминал лает и мгновенно исчезает
Я недостаточно хорошо разбираюсь в сценариях PowerShell/WSL, поэтому прошу совета, как это сделать правильно.
P.S. Я думаю, что могу установить jupyter для Windows и добавить ядра из WSL, но я хочу знать, можно ли решить проблему описанным выше способом.
Ответ №1:
Похоже, что необходимые инициализации выполняются в вашем ~/.bashrc
файле, который bash
по умолчанию загружается только в интерактивных сеансах, а не при отправке команды для выполнения -c
.
Однако вы можете явно указать bash
, чтобы сеанс считался интерактивным, используя эту -i
опцию.
Поэтому попробуйте следующее (обратите внимание на -i
):
wsl -e bash -ic "jupyter notebook"
Комментарии:
1. Спасибо за ясное объяснение! Я проверил
~/.bashrc
, есть ли какаяconda
-то инициализация, с помощью которой я установил Jupyter, так что в этом и была проблема.2. Рад слышать, что это было полезно, @QuadR; мое удовольствие.
Ответ №2:
Вы можете решить ее, используя абсолютный путь юпитера. Вот как это сделать
# this code should run in WSL
# get the absolute path of jupyter
which jupyter
# output
# /home/sheep/miniconda3/envs/flask/bin/jupyter
Когда вы запустите код в WSL, вы получите абсолютный путь jupyter.
Затем вы сможете подключить jupyter, запустив wsl -e bash -c "/home/sheep/miniconda3/envs/flask/bin/jupyter notebook"
его в PowerShell.
Примечание: /home/sheep/miniconda3/envs/flask/bin/jupyter
это абсолютный путь jupyter в моем компьютере.Вы должны заменить его своим.
Комментарии:
1. Спасибо! Это решение работает просто отлично