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第三方库


热门话题
java为什么@DELETE REST不起作用?   带有JPA2的java表值参数。1和Hibernate,Sql Server   如何将Java类添加到Xamarin VS2017项目   绘制多边形时出现java空指针异常   java Apache WebClient 303状态未重定向   java如何用一组字符串数组从数据库中获取数据   java是否可以使用Google Drive API向文件中添加脚本?   java组织。阿帕奇。贾斯珀。JspC jar文件下载   java在整个JSON映射中将单个值作为JSON流   通过命令行将文件输入到java   java rs.next()总是返回false   java标记异常,通知调用方利用异常消息   java Spring YML数组属性为空