bash скрипт для запуска ноутбука Jupyter в virtualenv - PullRequest
3 голосов
/ 07 апреля 2020

Чтобы ускорить запуск проектов, я создал небольшой скрипт bash, который выполняет следующее:

  • принимает аргумент (имя проекта)
  • перемещается в каталог этого проекта
  • запускает виртуальную среду
  • запускает блокнот jupyter
#!/bin/bash

if [ "$1" == "k3" ]; then
    project_path="tau-code/k3-analysis/"
fi

codepath="/media/peter/somedrive/code"
full_path="$codepath/$project_path"

# Go to directory of project
cd $full_path

# Start environment & notebook if available
pipenv shell
jupyter notebook --ip=0.0.0.0

Активирует среду, но не запускает команду jupyter. Когда я выхожу из среды, я вижу ошибку:

line 16: jupyter: command not found

Я могу вручную ввести jupyter notebook --ip=0.0.0.0 во вновь созданной среде, и это работает.

В чем может быть проблема?

Ответы [ 2 ]

4 голосов
/ 13 апреля 2020

pipenv shell запускает новую оболочку, которая должна быть деактивирована с помощью exit. В вашем скрипте любые команды после вызова pipenv shell не выполняются в этой новой оболочке. Вместо этого они выполняются в той же оболочке bash после закрытия оболочки виртуальной среды. Вы должны использовать pipenv run jupyter notebook --ip=0.0.0.0

См. документацию pipenv :

  • shell вызовет оболочку с активированным virtualenv. Эта оболочка может быть деактивирована с помощью exit.
  • run будет запускать данную команду из virtualenv с переадресацией любых аргументов (например, $ pipenv run python или $ pipenv run pip freeze).
1 голос
/ 20 апреля 2020

Привет, тебе нужно добавить это

pipenv run jupyter notebook
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...