Краткий вопрос
Используя 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