从闪存驱动器

时间:2016-05-06 13:51:39

标签: python windows virtualenv

我刚刚下载了Winpython 3.4.4.2,我试图从闪存驱动器中轻松使用它。我也使用git-bash。我在Win 7中设置了"路径"和" pythonpath"环境变量包括

F:\WinPython-32bit-3.4.4.2

如果我查看真正的Scripts文件夹:

/real/Scripts
$ ls
Activate.ps1      _decimal.pyd      _msi.pyd              _sqlite3.pyd     _testimportmultiple.pyd  easy_install-3.4-script.py     easy_install.exe           pip-3.4-script.py     pip.exe           python3.dll      pywintypes34.dll  tk86t.dll
_bz2.pyd          _elementtree.pyd  _multiprocessing.pyd  _ssl.pyd         _tkinter.pyd             easy_install-3.4.exe           easy_install.exe.manifest  pip-3.4.exe           pip.exe.manifest  python34.dll     select.pyd        unicodedata.pyd
_ctypes.pyd       _hashlib.pyd      _overlapped.pyd       _testbuffer.pyd  activate.bat             easy_install-3.4.exe.manifest  msvcp100.dll               pip-3.4.exe.manifest  pyexpat.pyd       pythoncom34.dll  sqlite3.dll       vcomp100.dll
_ctypes_test.pyd  _lzma.pyd         _socket.pyd           _testcapi.pyd    deactivate.bat           easy_install-script.py         msvcr100.dll               pip-script.py         python.exe        pythonw.exe      tcl86t.dll        winsound.pyd

我创造了一个名为“真实”的虚拟世界。现在,当我尝试激活virtualenv时,我得到:

/real/Scripts
$ source activate.bat                                
sh: @echo: command not found
sh: ./activate.bat: line 4: syntax error near unexpected token `('
sh: ./activate.bat: line 4: `if not defined PROMPT ('

/real/Scripts
$ source activate    
sh: activate: No such file or directory

activate.bat文件以:

开头
@echo off
set "VIRTUAL_ENV=F:\envs\virtalenvs\real"
if not defined PROMPT (

    set "PROMPT=$P$G"

)

if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)

如何激活virtualenv?

1 个答案:

答案 0 :(得分:1)

根据上面的评论,我从以下的virtualenv资源中获取了POSIX“激活”脚本:

# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

deactivate () {
    unset pydoc

    # reset old environment variables
    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
        PATH="$_OLD_VIRTUAL_PATH"
        export PATH
        unset _OLD_VIRTUAL_PATH
    fi
    if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then
        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
        export PYTHONHOME
        unset _OLD_VIRTUAL_PYTHONHOME
    fi

    # This should detect bash and zsh, which have a hash command that must
    # be called to get it to forget past commands.  Without forgetting
    # past commands the $PATH changes we made may not be respected
    if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
        hash -r 2>/dev/null
    fi

    if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
        PS1="$_OLD_VIRTUAL_PS1"
        export PS1
        unset _OLD_VIRTUAL_PS1
    fi

    unset VIRTUAL_ENV
    if [ ! "$1" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate
    fi
}

# unset irrelevant variables
deactivate nondestructive

VIRTUAL_ENV="$(if [ "$OSTYPE" "==" "cygwin" ]; then cygpath -u 'F:\envs\virtalenvs\venv_name'; else echo '/F/envs/virtalenvs/venv_name'; fi;)"
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/Scripts:$PATH"
export PATH

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "$PYTHONHOME" ] ; then
    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
    unset PYTHONHOME
fi

if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
    _OLD_VIRTUAL_PS1="$PS1"
    if [ "x" != x ] ; then
        PS1="$PS1"
    else
    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
    else
        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
    fi
    fi
    export PS1
fi

alias pydoc="python -m pydoc"

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands.  Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
    hash -r 2>/dev/null
fi

在VENV_NAME的脚本中搜索,而不是替换你的venv名称(你可能需要仔细检查文件路径。将脚本放到你的venv的Scripts文件夹中,名称为'activate',你应该好好去。为我工作。