问题
To speed up launching projects I created a small bash script which does the following:
- takes an argument (project name)
- moves to the directory of that project
- starts a virtual environment
- starts a jupyter notebook
#!/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
It activates the environment, but does not run the jupyter command. When I exit the environment I see the error:
line 16: jupyter: command not found
I can manually type jupyter notebook --ip=0.0.0.0 in my newly created environment and that does work.
What may be the problem?
回答1:
pipenv shell starts a new shell which must be deactivated by using exit. In your script any commands following the call to pipenv shell are not executed in that new shell. Instead they are executed in the same bash shell after the virtual environment shell is closed. You should use pipenv run jupyter notebook --ip=0.0.0.0
See pipenv documentation:
shellwill spawn a shell with the virtualenv activated. This shell can be deactivated by usingexit.runwill run a given command from the virtualenv, with any arguments forwarded (e.g.$ pipenv run pythonor$ pipenv run pip freeze).
回答2:
Hi you need to add this
pipenv run jupyter notebook
来源:https://stackoverflow.com/questions/61071121/bash-script-to-run-jupyter-notebook-in-virtualenv