我正在尝试用 CPython 制作一个应用程序,它应该可以在 linux 和 windows 上运行。 我正在使用 webkit 库,它在 linux (Ubuntu 12.04) 上运行良好,但我无法在 Windows 上运行。
我知道我可以使用 py2exe
将我的应用程序编译成 Windows 可执行文件 (.exe),但要做到这一点,它必须在我的 Windows 机器上运行。
问题是:有没有什么方法可以在 linux 下打包我的应用程序,这样它就可以将它的依赖项 (webkit) 捆绑在一起,这样它就可以在 Windows 下运行了?或者有什么方法可以在 linux 下制作不需要 python 文件任何依赖项的 Windows 可执行文件?
谢谢!
编辑: 这是我的测试应用代码:
import gtk
import webkit
class Base:
def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file("youtubeWindow.ui")
self.main_window = self.builder.get_object("main_window")
self.scrl_window = self.builder.get_object("scrl_window")
self.webview = webkit.WebView()
self.scrl_window.add(self.webview)
self.webview.show()
self.webview.open("http://youtu.be/o-akcEzQ6Y8")
self.main_window.show()
def main(self):
gtk.main()
print __name__
if __name__ == "__main__":
base = Base()
base.main()
最佳答案
好的,所以我无法让 webkit 在带有 GTK 的 Windows 上工作,但我发现 Qt 提供了一个集成的 WebKit 模块,所以我下载了 PySide(Python 的 Qt 包装器)并用这个脚本测试了它:
import sys
from PySide import QtCore
from PySide import QtGui
from PySide import QtWebKit
class MainWindow (QtGui.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.setGeometry(300,300,800,600)
self.setWindowTitle('QtPlayer')
web = QtWebKit.QWebView(self)
web.settings().setAttribute(QtWebKit.QWebSettings.PluginsEnabled, True)
web.load(QtCore.QUrl("http://youtu.be/Dys1_TuUmI4"))
web.show()
self.show()
def main():
app = QtGui.QApplication(sys.argv)
win = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我还使用了 GUI2EXE 和 *cx_Freeze* 将其打包成 .exe Windows 应用程序。 (不要忘记包含模块 atexit、PySide.QtNetwork,更多详细信息 here)
可以找到有关 Qt-Webkit 的精彩指南 here (它使用 PyQt,但它与 Pyside 兼容)
还有 Pyside 教程 here
关于python 跨平台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11853430/