python跨平台应用程序

Mik*_*aru 2 python packaging webkit cross-platform py2exe

我正在尝试在CPython中制作应该适用于Linux和Windows的应用程序.我正在使用webkit库,在linux上工作得很好(Ubuntu 12.04),但我不能让它在Windows上工作.

我知道,我可以编译我的应用程序到一个Windows可执行文件(.exe)py2exe,但要做到这一点就必须在我的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()
Run Code Online (Sandbox Code Playgroud)

Mik*_*aru 7

好吧,所以我无法让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() 
Run Code Online (Sandbox Code Playgroud)

我还使用GUI2EXE和*cx_Freeze*将其打包成.exe windows应用程序.(不要忘了包括模块的atexit,PySide.QtNetwork,更多的细节在这里)

关于Qt-Webkit的很酷的指南可以在这里找到(它使用PyQt,但它与Pyside兼容)

这里也是一个Pyside教程