unix部署中脚本的zc.buildout配方

zc.recipe.script的Python项目详细描述


许多部署提供了将配置绑定到 软件。这样做通常是为了更容易使用特定的 软件的部署。

传统的unix文件层次结构并不能真正提供 此类脚本的共享位置;zc.recipe.deployment:script recipe 在部署的bin目录中生成这些脚本,但是 而是将生成的脚本与部署本身关联起来。

配方的选项与 egg:脚本配方,添加了所需的部署 设置。使用部署中的etc目录而不是 构建的bin目录。这允许部署特定的信息 通过初始化设置嵌入到脚本中。

让我们看一个简单的案例。我们需要一个包裹 控制台脚本入口点:

>>> write('setup.py', '''\
... from setuptools import setup
... setup(
...     name="testpkg",
...     package_dir={"": "src"},
...     py_modules=["testmodule"],
...     zip_safe=False,
...     entry_points={
...         "console_scripts": [
...             "myscript=testmodule:main",
...             ],
...         },
...     )
... ''')
>>> mkdir('src')
>>> write('src', 'testmodule.py', '''\
... some_setting = "42"
... def main():
...     print some_setting
... ''')
>>> write('buildout.cfg',
... '''
... [buildout]
... develop = .
... parts = somescript
...
... [mydep]
... recipe = zc.recipe.deployment
... prefix = %s
... user = %s
... etc-user = %s
...
... [somescript]
... recipe = zc.recipe.script
... deployment = mydep
... eggs = testpkg
... scripts = myscript
... initialization =
...     import testmodule
...     testmodule.some_setting = "24"
... ''' % (sample_buildout, user, user))
>>> print system(join('bin', 'buildout')), # doctest: +NORMALIZE_WHITESPACE
Develop: 'PREFIX/.'
Installing mydep.
zc.recipe.deployment:
    Creating 'PREFIX/etc/mydep',
    mode 755, user 'USER', group 'GROUP'
zc.recipe.deployment:
    Creating 'PREFIX/var/cache/mydep',
    mode 755, user 'USER', group 'GROUP'
zc.recipe.deployment:
    Creating 'PREFIX/var/lib/mydep',
    mode 755, user 'USER', group 'GROUP'
zc.recipe.deployment:
    Creating 'PREFIX/var/log/mydep',
    mode 755, user 'USER', group 'GROUP'
zc.recipe.deployment:
    Creating 'PREFIX/var/run/mydep',
    mode 750, user 'USER', group 'GROUP'
zc.recipe.deployment:
    Creating 'PREFIX/etc/cron.d',
    mode 755, user 'USER', group 'GROUP'
zc.recipe.deployment:
    Creating 'PREFIX/etc/init.d',
    mode 755, user 'USER', group 'GROUP'
zc.recipe.deployment:
    Creating 'PREFIX/etc/logrotate.d',
    mode 755, user 'USER', group 'GROUP'
Installing somescript.
Generated script 'PREFIX/etc/mydep/myscript'.
>>> print ls("etc/mydep")
drwxr-xr-x USER GROUP etc/mydep
>>> cat("etc/mydep/myscript") # doctest: +NORMALIZE_WHITESPACE
#!/usr/bin/python
<BLANKLINE>
import sys
sys.path[0:0] = [
    'PREFIX/src',
    ]
<BLANKLINE>
import testmodule
testmodule.some_setting = "24"
<BLANKLINE>
import testmodule
<BLANKLINE>
if __name__ == '__main__':
    sys.exit(testmodule.main())

发布历史记录

1.0.2(2014-08-19)

修复打包错误(包括src/zc/recipe/script/readme.txt)。

1.0.1(2014-08-19)

首次公开发行。

1.0.0(2011-12-29)

初始释放(ZC内部)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
日志列“\u id”中的java JSON到db创建错误不存在   在GWT中使用字符串变量作为对象的java   RESTweb服务中get方法中的java invoke post方法   使用参数类型int时,java MyBatis的列类型无效   java Android在不触发onTextChanged的情况下调用backspace   java为什么在安卓 studio中顶栏搜索不起作用?   从VB转换。net到java   Android Studio Java蓝牙Gatt连接问题   多线程Java从线程通知线程   如果在没有任何选项的情况下运行JVM,java对内存使用的影响?   Java handson使用图表进行练习   java为什么UTF8的新字符串包含更多字节   java如何使用此方法制作声音循环?   java为什么强制转换对象是多余的