从闪存驱动器使用 Virtualenv 和 Winpython [英] Using Virtualenv with Winpython from flash drive
问题描述
我刚刚下载了 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屋!