我有一个 python 脚本,它使用 pyinstaller 转换为“一个文件可执行文件”。可执行文件在我的计算机上运行没有任何问题。当它在另一台计算机上运行时,其中一个线程似乎在使用 gtk 和 wnck 的地方停止工作。
无法加载类型库引用的共享库“libwnck-3.so.0”:/usr/lib/x86_64-linux-gnu/libwnck-3.0.so.0:未定义符号:gdk_display_get_monitor_at_window
一旦可执行文件在另一台计算机的终端中运行,就会显示上述警告(我猜是在它读取导入语句时)。
当它到达以下行时会引发错误;
screen = Wnck.Screen.get_default()
GLib.GError:g-invoke-error-quark:找不到 wnck_screen_get_default:/usr/lib/x86_64-linux-gnu/libwnck-3.0.so.0:未定义符号:gdk_display_get_monitor_at_window (1)
以下函数在发生错误的地方线程化
import gi
gi.require_version('Wnck', '3.0')
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Wnck
def my_window():
screen = Wnck.Screen.get_default() -- this line throws error
screen.force_update()
while True:
time.sleep(.5)
while Gtk.events_pending():
Gtk.main_iteration()
new_window = screen.get_active_window()
....
....
我正在使用 - Ubuntu 16.04,xenial。| libgtk-3-0 版本:3.18.9
其他电脑使用 - Ubuntu 18.04.4 仿生 | libgtk-3-0 版本:3.22.30