Tôi đang viết game trong python 2.7 và muốn viết "bootstrap" của môi trường phát triển trò chơi của tôi, sau đó gọi shovel. Nếu virtualenvwrapper không được phát hiện, tôi sẽ sử dụng virtualenv bootstrap solution. Tuy nhiên, nếu phát hiện thấy virtualenvwrapper là, tôi muốn sử dụng nó thay thế.Scripting virtualenvwrapper mkvirtualenv
Vấn đề là các hàm vỏ ảo nội tuyến ảo không được thừa hưởng bởi tập lệnh khởi động của tôi. Theo như tôi biết, các quy tắc đó hoạt động như "mkvirtualenv NotOrion". Kể từ biến môi trường "VIRTUALENVWRAPPER_VIRTUALENV" là bộ (trong trường hợp của tôi, từ macports: /opt/local/bin/virtualenv-2.7
), tôi đã cố gắng sử dụng nó trực tiếp thay vì:
#!/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
kịch bản bootstrap của tôi kết thúc cài đặt cái xẻng. Tuy nhiên chạy xẻng (ví dụ như dòng cuối cùng) tạo ra cảnh báo:
/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
Vì vậy, có thể bằng cách nào đó gọi "mkvirtualenv" từ tập lệnh? Nếu không, tôi có thể chạy cái gì khác từ tập lệnh của tôi có cùng tác dụng không nhưng không có tạo cảnh báo không?
Vấn đề chính xác tương tự, viết tập lệnh khởi động. Cảm ơn bạn! – cloudrave