Mac 10.8 + Python脚本:如何在调度中最好地控制python架构?

时间:2013-04-16 05:56:52

标签: python-2.7 launchd cx-oracle

我编写了一个查询cx_Oracle并处理结果的python脚本。现在我准备使用launchd在我的mac OS10.8上安排它了。

你可能知道,这个mac OS上的cx_Oracle需要unweildy解决方案来控制运行.py脚本的python的位数。这些解决方案包括使您的python(在安装或虚拟环境中)变为在运行脚本时手动指定位数,例如: “arch -i386 /usr/bin/python2.7 scriptname.py”。

我已经阅读了plist文档,据我所知,你不能指定位数作为plist配置的一部分。也许你可以在适用于python的Info.plist文件中,但它会适用于你安排的每个.py脚本。在这种情况下,你可能只有32位或64位python安装。

了解我的目标是计划脚本并指定每个脚本运行它的python的位数,你会推荐什么?我有什么容易忽视的吗?非常感谢您的建议!

1 个答案:

答案 0 :(得分:1)

~/library/LaunchAgents/local.arch.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>local.arch</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/arch</string>
        <string>-i386</string>
        <string>/usr/bin/python2.7</string>
        <string>/volumes/ramdisk/arch.py</string>
    </array>
    <key>RunAtLoad</key>
    <false/>
</dict>
</plist>

/volumes/ramdisk/arch.py

import sys

with open('/volumes/ramdisk/python.arch.log', 'a') as f:
    f.write('sys.maxsize = %s\n' % sys.maxsize)

在终端:

$ launchctl load ~/library/LaunchAgents/local.arch.plist
$ launchctl start local.arch
$ # arch -i386, 32-bit
$ cat /volumes/ramdisk/python.arch.log
sys.maxsize = 2147483647
$ # no arch, 64-bit
$ /usr/bin/python2.7 -c 'import sys; print(sys.maxsize)'
9223372036854775807