从闪存驱动器使用 Virtualenv 和 Winpython [英] Using Virtualenv with Winpython from flash drive

查看:18
本文介绍了从闪存驱动器使用 Virtualenv 和 Winpython的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚下载了 Winpython 3.4.4.2 ,我正在尝试从闪存驱动器中便携地使用它.我也在使用 git-bash.我在 Win 7 中,我将路径"和pythonpath"环境变量设置为包括

I've just downloaded Winpython 3.4.4.2 , and I'm trying to use it portably from a flash drive. I'm using git-bash as well. I'm in Win 7 and I set the "path" and "pythonpath" environmental variables to include

F:\WinPython-32bit-3.4.4.2

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

If I look in the real Scripts folder:

/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

我创建了一个名为real"的 virtualenv.现在,当我尝试激活 virtualenv 时,我得到:

I've created a virtualenv called 'real'. Now when I try to activate the virtualenv I get:

/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 文件以:

The activate.bat file starts with:

@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 ?

How can I activate the virtualenv ?

推荐答案

基于上面的评论,我从下面的 virtualenv 源中获取了 POSIX激活"脚本:

Based on The comment above I grabbed the POSIX "activate" script from the virtualenv sources below:

# 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 名称(您可能需要仔细检查文件路径.将脚本放入名为activate"的 venv 的 Scripts 文件夹中,您应该很高兴.这个为我工作.

search in the script for VENV_NAME, than replace with your venv's name ( you may have to double check the file path. Drop the script into your venv's Scripts folder with the name 'activate' and you should be good to go. This worked for me.

这篇关于从闪存驱动器使用 Virtualenv 和 Winpython的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆