bash脚本在virtualenv中运行jupyter笔记本 [英] bash script to run jupyter notebook in virtualenv

查看:136
本文介绍了bash脚本在virtualenv中运行jupyter笔记本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了加快启动项目的速度,我创建了一个小的bash脚本,该脚本执行以下操作:

To speed up launching projects I created a small bash script which does the following:

  • 接受参数(项目名称)
  • 移动到该项目的目录
  • 启动虚拟环境
  • 启动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命令.当我退出环境时,我看到错误:

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

我可以在新创建的环境中手动键入jupyter notebook --ip=0.0.0.0,并且可以正常工作.

I can manually type jupyter notebook --ip=0.0.0.0 in my newly created environment and that does work.

可能是什么问题?

推荐答案

pipenv shell启动一个新的shell,必须使用exit将其禁用.在脚本中,调用pipenv shell之后的任何命令都不会在该新Shell中执行.相反,它们在关闭虚拟环境外壳程序后在同一bash外壳程序中执行.您应该使用pipenv run jupyter notebook --ip=0.0.0.0

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

请参见 pipenv文档:

  • shell将在激活virtualenv的情况下生成一个shell.可以使用exit停用此外壳.
  • run将从virtualenv运行给定命令,并转发任何参数(例如$ pipenv run python$ pipenv run pip freeze).
  • shell will spawn a shell with the virtualenv activated. This shell can be deactivated by using exit.
  • run will run a given command from the virtualenv, with any arguments forwarded (e.g. $ pipenv run python or $ pipenv run pip freeze).

这篇关于bash脚本在virtualenv中运行jupyter笔记本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆