【问题标题】:How does one enter a Python virtual environment and run shell commands in it from a shell script?如何进入 Python 虚拟环境并从 shell 脚本在其中运行 shell 命令?
【发布时间】:2016-11-30 14:11:30
【问题描述】:

我一直在编写要在 CentOS 7 Docker 容器中运行的 shell 脚本,以创建 AppImage。在这个脚本中,我想在由 shell 脚本启动的 Python 虚拟环境(通过运行 source AppDir/usr/bin/activate 开始)中运行 Shell 命令 pip install -U spyder。问题是我不知道如何执行此操作,因为脚本中 source AppDir/usr/bin/activate 行之后的行被忽略(因为在脚本中此时,shell 已进入 Python 虚拟环境)。那么是否有一些选项我需要传递 source AppDir/usr/bin/activate 命令以便它在这个 Python 虚拟环境中运行 pip install -U spyder 命令?

【问题讨论】:

    标签: python shell virtualenv


    【解决方案1】:

    您可以在不激活虚拟环境的情况下安装您的需求,但需要提供您的 virtualenv pip 的完整路径。

    <path_to_virtualenv>/bin/pip install -U spyder
    

    因为activate 正在做的是将您的virtualenv bin/ 文件夹放在PATH 之前,所以pippython 命令将在全局之前引用您的viartualenv。来自activate的来源:

    VIRTUAL_ENV="<path_to_env>"
    export VIRTUAL_ENV
    
    _OLD_VIRTUAL_PATH="$PATH"
    PATH="$VIRTUAL_ENV/bin:$PATH"
    export PATH
    

    【讨论】:

    • 它必须在虚拟环境中,因为我希望将安装的文件安装到/AppDir/usr(我的 virtualenv 目录)。
    • @BrentonHorne 它将安装在您的 virtualenv 中。
    • 酷!这负责 pip 安装。但是,如果我需要通过 shell 脚本在 virtualenv 中运行“python install setup.py”怎么办?
    • @VinayRao 我相信你只需要&lt;path_to_virtualenv&gt;/bin/python install setup.py。就是这样。:)
    猜你喜欢
    • 2021-02-12
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2017-07-30
    • 2023-02-04
    相关资源
    最近更新 更多