我已经开始编写自己的导入 virtualenv 的包装脚本。主要原因是我使用 dpkgs 来安装我的大部分依赖项,包括distribute
.所以我喜欢在创建新环境时避免下载额外的副本 - 这有一个好处是它运行得更快。
这是您可以开始使用的基线包装器。我添加了一条评论,您可以在其中插入一些代码以将您的自定义 setuptools 代码符号链接/复制到 virtualenv 中:
import os, subprocess, sys, virtualenv
# virtualenv changed its internal api slightly after 1.5.
NEW_API = (1, 5)
def get_version(version):
return tuple([int(v) for v in version.split('.')])
def main():
# set the logging level here
level = virtualenv.Logger.level_for_integer(0)
logger = virtualenv.Logger([(level, sys.stdout)])
virtualenv.logger = logger
# insert your command-line parsing code here, if needed
root = sys.argv[1]
home, lib, inc, bin = virtualenv.path_locations(root)
result = virtualenv.install_python(home, lib, inc, bin,
site_packages=True, clear=False)
pyexec = os.path.abspath(result)
version = get_version(virtualenv.virtualenv_version)
if version < NEW_API:
virtualenv.install_distutils(lib, home)
else:
virtualenv.install_distutils(home)
virtualenv.install_activate(home, bin)
# insert whatever post-virtualenv-setup code you need here
if __name__ == '__main__':
main()
用法:
% python wrapper.py [path]