python 跨平台应用程序

标签 python webkit cross-platform packaging py2exe

我正在尝试用 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/

相关文章:

带有表单元素的 CSS float div 在 mac 上的 Safari 3 中消失

C++ 跨平台后台任务

android - Flutter - 内存调查

python - Keras 似乎在调用 fit_generator 后挂起

python - Numpy python 对不同索引的向量求和

python - 如何将变量添加到 Keras 中的进度条?

json - 在 mac 上显示我的工具栏 (Node-Webkit)

Python:为相对支持先验算法生成候选项集

c++ - 如何在窗口中嵌入 WebKit?

c# - xamarin 中的 float 菜单栏