Sto scrivendo uno game in python 2.7 e voglio scrivere lo "bootstrap" dell'ambiente di sviluppo del mio gioco, quindi invocare shovel. Se virtualenvwrapper non viene rilevato, userò uno virtualenv bootstrap solution. Tuttavia se virtualenvwrapper è rilevato, vorrei invece usarlo.Scripting virtualenvwrapper mkvirtualenv
Il problema è che le funzioni di shell inline virtualenvwrapper non sono ereditate dal mio script di bootstrap. Per quanto ne so, questo esclude di eseguire qualcosa come "mkvirtualenv NotOrion". Dal momento che la variabile d'ambiente "VIRTUALENVWRAPPER_VIRTUALENV" è set (nel mio caso, da macports: /opt/local/bin/virtualenv-2.7
), ho provato ad usarlo direttamente invece:
#!/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
Il mio script di bootstrap termina l'installazione di pala. Tuttavia in esecuzione pala (ad esempio, l'ultima riga) produce avvertimenti:
/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
Quindi è possibile invocare in qualche modo "mkvirtualenv" da uno script? In caso contrario, posso eseguire qualcos'altro dal mio script che ha lo stesso effetto ma lo non produce gli avvisi??
Stesso problema, scrivendo uno script di bootstrap. Grazie! – cloudrave