我正在尝试在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()
答案 0 :(得分: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()
我还使用 GUI2EXE 和* cx_Freeze *将其打包成.exe windows应用程序。 (不要忘记包含模块 atexit,PySide.QtNetwork ,更多详情here)
可以找到关于Qt-Webkit的很酷的指南here(它使用PyQt,但它与Pyside兼容)
也是Pyside教程here
答案 1 :(得分:0)
为了在Windows上运行脚本,您需要安装Webkit及其Windows绑定(库)。下面的2个链接提供了设置文件和说明。
http://opensourcepack.blogspot.com/2009/12/pywebkitgtk-windows-binary.html http://opensourcepack.blogspot.com/2011/01/conservative-all-in-one-pygtk-installer.html
第二个链接提供了一个二进制文件,用于安装所有需要的库(一体化软件包)。