Я пишу игру на python 2.7 и хочу написать сценарий "начальной загрузки" для разработки моей игры. среду, а затем вызовите shovel. Если virtualenvwrapper не обнаружен, я буду использовать решение для начальной загрузки virtualenv. Однако, если обнаружится виртуальная обертка, я хотел бы использовать ее вместо этого.
Проблема в том, что встроенные функции оболочки virtualenvwrapper не наследуются моим загрузочным скриптом. Насколько я знаю, это исключает запуск чего-то вроде "mkvirtualenv NotOrion". Поскольку переменная среды "VIRTUALENVWRAPPER_VIRTUALENV" установлена (в моем случае из macports: /opt/local/bin/virtualenv-2.7
), я попытался использовать его напрямую:
#!/usr/bin/env bash
# Name your first "bootstrap" environment:
ENV_NAME=NotOrion
# Options for your first environment:
ENV_OPTS='--no-site-packages --distribute'
unset PYTHONDONTWRITEBYTECODE
function create_virtualenvwrapper_venv {
echo "installing into virtualenvwrapper directory"
cd $WORKON_HOME
$VIRTUALENVWRAPPER_VIRTUALENV $ENV_OPTS $ENV_NAME
cd -
#mkvirtualenv $ENV_NAME
#workon $ENV_NAME
}
function create_standalone_venv {
# not run/snipped
}
if [ -z "$VIRTUALENVWRAPPER_VIRTUALENV" ]; then
create_standalone_venv
else
create_virtualenvwrapper_venv
fi
pip install shovel
shovel help
Мой загрузочный скрипт завершает установку shovel. Однако бегущая лопата (например, последняя строка) выдает предупреждения:
/Users/me/.virtualenvs/NotOrion/bin/shovel:25: UserWarning: Module argparse was already imported from /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/argparse.pyc, but /Users/me/.virtualenvs/NotOrion/lib/python2.7/site-packages is being added to sys.path
import pkg_resources
# normal shovel output snipped
Так можно ли как-то вызвать «mkvirtualenv» из скрипта? Если нет, могу ли я запустить из своего скрипта что-то еще, что дает тот же эффект, но не выдает предупреждения?