簡體   English   中英

Python虛擬環境未從bash腳本激活

[英]Python virtual environment not activating from bash script

現在,在您將其標記為重復項之前,我已經嘗試過此處發布的解決方案,但它們對我不起作用。 我嘗試制作一個別名,然后嘗試創建一個函數,如下所示:

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
  1. 在函數中使用激活腳本的完整路徑source /path/to/activate
  2. 導出功能: export -f activate
  3. 確保腳本是bash腳本: #!/bin/bash

以下使用Anaconda虛擬環境對我有用,也許它也可以與您一起使用?

#!/usr/bin/env bash

# do bash stuff

# Python env
PATH=/home/username/path/to/activate/bin
python -u /script/to/run

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM