脚本virtualenvwrapper mkvirtualenv

Edw*_*ach 6 bash virtualenvwrapper

我在python 2.7中编写游戏,想要编写游戏开发环境的"bootstrap"脚本,然后调用铲子.如果未检测到virtualenvwrapper,我将使用virtualenv bootstrap解决方案.但是,如果virtualenvwrapper 检测到,我想用它代替.

问题是virtualenvwrapper内联shell函数不是由我的引导脚本继承的.据我所知,这排除了像"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
Run Code Online (Sandbox Code Playgroud)

我的bootstrap脚本完成安装铲.但是,运行铲(例如最后一行)会产生警告:

/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
Run Code Online (Sandbox Code Playgroud)

那么有可能以某种方式从脚本中调用"mkvirtualenv"吗?如果没有,我可以从我的脚本中运行具有相同效果但产生警告的其他内容吗?

Chr*_*ams 12

你的脚本应该能够做到:

# 'which' will print absolute path to virtualenvwrapper.sh
source `which virtualenvwrapper.sh`
Run Code Online (Sandbox Code Playgroud)

我将其用于某些部署脚本.