我编写了一个查询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的位数,你会推荐什么?我有什么容易忽视的吗?非常感谢您的建议!
答案 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