0

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

您可能知道,此 Mac OS 上的 cx_Oracle 需要笨拙的解决方案来控制运行 .py 脚本的 python 的位数。这些解决方案的范围从安装你的python(在安装或虚拟环境中)到在运行脚本时手动指定位数,例如“arch -i386 /usr/bin/python2.7 scriptname.py”。

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

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

4

1 回答 1

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
于 2013-04-25T18:18:24.623 回答