创建自己的启动脚本

Wrongway提示:该段一般情况下初学者用不到,所以刚接触virtualenv的朋友不要在此节投放过多精力。Virtualenv的文档讲解顺序是有点问题。

创建隔离环境时,virtualenv不会执行额外操作。但开发者有时会想在安装隔离环境后运行某个脚本。例如用脚本安装某个web应用。

要创建上述脚本,需要调用virtualenv.create_bootstrap_script(extra_text) ,将后续操作写入到生成的启动脚本,以下是从docstring中生成的文档:

启动脚本与一般脚本无异,只是多了三个extend_parser, adjust_options, after_install三个钩子方法。

create_bootstrap_script返回一个可定制的,能做为启动脚本的字符串(当然,该字符串后面要写回到磁盘文件中)。这个字符串是一个标准的virtualenv.py脚本,用户可以自行添加内容(所加内容必须是python代码)。

如果定义了下列方法,运行脚本时就会被调用:

extend_parser(optparse_parser):
可以在解析器optparse_parser中添加或删除参数。
adjust_options(options, args):
调整options,或改变args(如果要接收各种不同的参数,一定要在最后将 args 修改为 [DEST_DIR]
after_install(options, home_dir):

在所有代码和模块安装完之后,就会调用该方法。这可能是用户最喜欢的方法,例如下:

  1. def after_install(options, home_dir):
  2. if sys.platform == 'win32':
  3. bin = 'Scripts'
  4. else:
  5. bin = 'bin'
  6. subprocess.call([join(home_dir, bin, 'easy_install'),
  7. 'MyPackage'])
  8. subprocess.call([join(home_dir, bin, 'my-package-script'),
  9. 'setup', home_dir])

上述例子会安装一个包,并运行包内的setup脚本


wrongway在这里强调:上述三个方法并不是独立方法,而是一段代码字符串!!也就是extra_text的内容。有点象javascript下的eval(‘……代码字符串……’)