Запуск несистемного Python с virtualenv в 32-битном режиме на OS X

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

11
задан Community 23 May 2017 в 11:53
поделиться