今天是我第一次使用 Python,所以我相信这将是一个简单的问题。
我需要从命令行应用程序转换这个 Python 脚本:webkit2png。最终结果将是一个 URL,它返回作为查询字符串参数传递给它的网页图像。我已经在 Windows 上使用 .NET 和 IE、Gecko 和 WebKit 实现了这一点,但现在需要在 OS X 上为 Safari 做同样的事情。
我想我已经把它转换了,但不幸的是,我在 OS X 上从 Apache 运行脚本时遇到了问题:
app = AppKit.NSApplication.sharedApplication()
# create an app delegate
delegate = AppDelegate.alloc().init()
AppKit.NSApp().setDelegate_(delegate)
# create a window
rect = Foundation.NSMakeRect(0,0,100,100)
win = AppKit.NSWindow.alloc()
win.initWithContentRect_styleMask_backing_defer_ (rect,
AppKit.NSBorderlessWindowMask, 2, 0)
错误在最后一行“initWithContentRect ...”中引发。我看到的错误是:
<class 'objc.error'>: NSInternalInconsistencyException - Error (1002) creating CGSWindow
args = ('NSInternalInconsistencyException - Error (1002) creating CGSWindow',)
message = 'NSInternalInconsistencyException - Error (1002) creating CGSWindow'
name = u'NSInternalInconsistencyException'
如果我在命令行上运行脚本(在删除 CGI 内容之后),它会完美运行。
这是我要导入的库:
import cgi
import cgitb; cgitb.enable() # for troubleshooting
import sys
try:
import Foundation
import WebKit
import AppKit
import objc
except ImportError:
print "Cannot find pyobjc library files. Are you sure it is installed?"
sys.exit()