代码之家  ›  专栏  ›  技术社区  ›  peachykeen

未从bash脚本激活Python虚拟环境

  •  1
  • peachykeen  · 技术社区  · 6 年前

    在你把它标为复制品之前,我已经试过了 posted here 他们不是为我工作。我试着制作一个别名,并试着创建一个函数,如下所示:

    activate () {
        echo Activating Virtual Environment...
        source alexa/bin/activate
    }
    activate
    

    但是我的脚本只是在没有激活虚拟环境的情况下运行。脚本正在与我的虚拟环境目录相同的目录中运行, alexa .

    为清楚起见,我尝试的另一种解决方案是制作一个别名:

    alias activate="source alexa/bin/activate"
    activate
    

    那不起作用,给了我一个错误 ./alexaEnvSetup.sh: line 43: activate: command not found .

    有什么想法吗?

    编辑 :我认为值得一提的是 echo 当我这样做的时候,命令会打印出来。所以函数被输入。虚拟环境没有被激活。

    编辑 :添加完整代码:

    #!/bin/bash
    
    if [[ "$OSTYPE" == "linux-gnu" ]]; then
        echo Operating system: Linux
    elif [[ "$OSTYPE" == "darwin"* ]]; then
        echo Operating system: Mac OSX
        echo
    
        # Install Python 3.6.5 using `curl`
        curl -O https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
        tar xf Python-3.6.5.tgz
        cd Python-3.6.5
        ./configure
        make
        make install
    
        echo
        echo Python Version 3.6.5 Installed
        echo
    
        # Install Pip
        curl -O http://bootstrap.pypa.io/get-pip.py
        /usr/local/bin/python3.6 get-pip.py
    
        echo
        echo Pip Installed
        echo
    
        # Install virtualenv
        pip install virtualenv
    
        echo
        echo Virtual Environment Installed
    
        virtualenv -p python3 alexa
        echo Created Virtual Environment, \"alexa\"
    
        activate () {
            echo Activating Virtual Environment...
            source /Users/XXXX/Auto-Lab/Commerce/alexa/bin/activate
        }
        export -f activate
        activate
    
        echo Virtual Environment, \"alexa\", Created and Activated
        echo
    
        # All packages (time, urllib, and json) should come default with Python3
    
    elif [[ "$OSTYPE" == "cygwin" ]]; then
        # POSIX compatibility layer and Linux environment emulation for Windows
        echo Operating system: Cygwin
    elif [[ "$OSTYPE" == "msys" ]]; then
        # Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
        echo Operating system: Msys
    elif [[ "$OSTYPE" == "win32" ]]; then
        echo Operating system: Windows32
    elif [[ "$OSTYPE" == "freebsd"* ]]; then
        echo Operating system: FreeBSD
    else
        echo Operating system unknown.
    fi
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   glenn jackman    6 年前
    1. 使用 完整路径 要在函数中激活脚本: source /path/to/activate
    2. 导出函数: export -f activate
    3. 确保脚本是bash脚本: #!/bin/bash
        2
  •  0
  •   Scott Skiles    6 年前

    下面的作品为我使用Anaconda虚拟环境,也许它将与您的工作也?

    #!/usr/bin/env bash
    
    # do bash stuff
    
    # Python env
    PATH=/home/username/path/to/activate/bin
    python -u /script/to/run