Краткий вопрос
Можно ли с помощью virtualenv / virtualenvwrapper добавить к вызову python
префикс, связанный с определенной виртуальной средой?
Фон
Я хотел бы иметь несколько виртуальных сред с использованием brew установлен Python 2.7, но некоторые из них работают в 64-битном режиме, а другие в 32-битном режиме.
Ниже приведены типичные настройки для моей разработки под OS X.Конкретный префикс, который я хотел бы добавить к вызову python
, это arch -i386
, чтобы заставить Python работать в 32-битном режиме.Опять же, наиболее важной частью является то, что он будет добавлен только после вызова workon env32
(как показано в примере).Я знаю, что могу настроить псевдоним в своем файле .bash_profile, но его придется изменять каждый раз, когда я создаю / удаляю виртуальные среды.
РЕДАКТИРОВАТЬ
Чтобы подробнее разобраться в проблемах, которые яПри использовании простого псевдонима может быть более 1 32-битной виртуальной среды.При этом при вызове workon
в идеале добавляется префикс к вызову python
, поэтому рабочий процесс в терминале будет таким же.То есть после вызова workon env_x_32
я смогу просто использовать python
, а arch -i386
будет прозрачным для меня при использовании терминала.
Python Установка:
> brew install python --framework --universal
Создание виртуальных сред (после установки pip, virtualenv и virtualenvwrapper):
> mkvirtualenv env_1_64 --no-site-packages
> mkvirtualenv env_1_32 --no-site-packages
> mkvirtualenv env_2_64 --no-site-packages
> mkvirtualenv env_2_32 --no-site-packages
64-битное использование:
> workon env_1_64
> python myscript.py
> workon env_2_64
> python my_other_project_script.py
32-битное использование: (текущее / неидеальное)
> workon env_1_32
> arch -i386 python myscript.py
> workon env_2_32
> arch -i386 python my_other_project_script.py
32-битное использование: (идеальное)
> workon env_1_32
> python my_32bit_project.py # Note that the arch -i386 would be transparent
Решение
Работает с комментариями Шона :
Я добавил псевдоним внутри активатора / деактиватора для сред, которые я хотел запустить как 32-битные.Подробнее см. Ниже.
env_1_32: активировать скрипт
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
deactivate () {
alias python='python' # <---- Added this line
# reset old environment variables
if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
PATH="$_OLD_VIRTUAL_PATH"
export PATH
unset _OLD_VIRTUAL_PATH
fi
# ****** Removed Content to keep the post shorter*********
}
# unset irrelavent variables
deactivate nondestructive
VIRTUAL_ENV="/Users/Adam/.envs/env_1_32"
export VIRTUAL_ENV
# 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
fi
# ****** Removed Content to keep the post shorter*********
alias python='arch -i386 python' # <---- Added this line to run as 32bit