【问题标题】:How can I run command inside virtualenv in shell script如何在 shell 脚本的 virtualenv 中运行命令
【发布时间】:2019-01-12 23:37:08
【问题描述】:

我使用 pipenv 开发了我自己的基于 django 的项目。 几天前,我创建了简单的 bash 脚本来加速无聊的事情。

我一直运行终端,进入同一目录并执行pipenv shell,然后我在VScode中打开项目code .并启动python manage.py runserver以查找我的进度。

我尝试创建执行相同操作但简化的脚本,只需运行 webber 即可(它来自 /usr/local/bin)。

但是我有一个问题,我不能让我的pipenv shell 运行并同时执行python manage.py runserver。我的意思是当我停止 Ctrl+C python 服务器时,我没有收到我的虚拟环境(这发生在 bash 脚本中〜通常工作正常)。

但是,服务器正在启动,所以它是虚拟环境。 我尝试使用pipenv run 命令,但它根本没有进入虚拟环境。

脚本:

#!/bin/bash
cd ~/Documents/myprojects/Webber
code .
source $(pipenv --venv)/bin/activate
python manage.py runserver

我的问题是:如何在 shell 脚本的 virtualenv 中运行命令并接收这个子 shell?

【问题讨论】:

    标签: bash shell pipenv


    【解决方案1】:

    您可以使用 virtualenv 文件夹的完整路径来代替 pipenv 命令。例如,如果您在名为 venv-webber 的主目录中创建了虚拟环境:

    source $HOME/venv-webber/bin/activate

    【讨论】:

    • 我试过了,但 Ctrl + C 终止 bash 脚本,不仅是 python 开发服务器(而且我不知道如何执行此操作)。我没有在终端收到活动的虚拟环境。
    • 我认为您面临的问题与您正在终止您的 shell 会话(通过运行 Ctrl + C)这一事实有关,这会导致您的脚本停止,在这种情况下,问题的框架是错误的.如果您希望脚本在您终止 shell 会话后继续运行,您可以使用nohuptmux 运行它。如果您希望脚本在后台运行,只需在末尾加上 & 即可运行它(再次注意,如果您关闭 shell,脚本将停止):
    猜你喜欢
    • 2019-09-02
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多