加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何从bash脚本中停用virtualenv

发布时间:2020-12-16 23:42:06 所属栏目:Python 来源:网络整理
导读:我是 shell脚本的新手,但我想制作一个bash脚本,用于使用virtualenv激活/停用虚拟环境. 然后我想像Ubuntu中的服务一样使用这个脚本将其复制到/etc/init.d文件夹中. 在我的脚本中,我有一个这样的变量: VENV = /选择/ odoo / odoo_server / venv_oddo /箱 此变
我是 shell脚本的新手,但我想制作一个bash脚本,用于使用virtualenv激活/停用虚拟环境.
然后我想像Ubuntu中的服务一样使用这个脚本将其复制到/etc/init.d文件夹中.

在我的脚本中,我有一个这样的变量:
VENV = /选择/ odoo / odoo_server / venv_oddo /箱

此变量表示虚拟环境中的bin路径.

在脚本中,我可以使用以下语句激活虚拟环境:
. ${} VENV /激活

这是可能的,因为activate是虚拟环境中bin目录内的文件.

但我不知道在我的脚本中使用的语句来停用我的虚拟环境.
我不能这样做:. ${} VENV /关闭

问题是不存在名为deactivate的文件,但是取消激活是虚拟环境中bin / activate文件中的一个函数.

解决方法

制作这样有用的服务很难.
. ${VENV}/activate # note the dot

要么

source ${VENV}/activate

将source激活脚本,即运行其内容,就像它们是您获取它们的shell或脚本的一部分一样. virtualenvironment的激活is designed for this usage.相反,只是正常执行脚本

${VENV}/activate # note: NO dot and NO 'source' command

将在子shell中运行其内容,并且不会产生任何有用的效果.

但是,您的服务脚本已经在自己的子shell中运行.因此,除了作为服务启动过程的一部分运行的任何python命令外,它不会产生任何影响.

从好的方面来说,你甚至不必关心去激活环境,除非你想在服务启动过程中运行更多的python东西,但是在你的virtualenv之外.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读