0

次の小さなPythonプログラムは、KDEAPIを使用してURLのコンテンツを取得します。残念ながら、それはsegfaultsです。私は何か間違ったことをしていますか、それともこれはKDEのバグですか?

kio.py:

#!/usr/bin/env python2
# coding: utf-8

from PyKDE4 import kdecore,kio
url = kdecore.KUrl("http://www.google.com")
print url
kio.KIO.get(url)
print "ok!"

それを実行する:

[joel@mouton tmp]$ ./kio.py 
PyQt4.QtCore.QUrl(u'http://www.google.com')
Segmentation fault (core dumped)

バックトレース:

(gdb) bt
#0  0xb6a352a4 in QObject::thread() const () from /usr/lib/libQtCore.so.4
#1  0xb46f0b43 in ?? () from /usr/lib/libkio.so.5
#2  0xb46f0eaa in KIO::Scheduler::doJob(KIO::SimpleJob*) () from /usr/lib/libkio.so.5
#3  0xb464bb8c in ?? () from /usr/lib/libkio.so.5
#4  0xb464d81a in KIO::TransferJob::TransferJob(KIO::TransferJobPrivate&) () from /usr/lib/libkio.so.5
#5  0xb4652c69 in KIO::get(KUrl const&, KIO::LoadType, QFlags<KIO::JobFlag>) () from /usr/lib/libkio.so.5
#6  0xb4b0649b in ?? () from /usr/lib/python2.7/site-packages/PyKDE4/kio.so
#7  0xb762425a in PyCFunction_Call () from /usr/lib/libpython2.7.so.1.0
#8  0xb7682182 in PyEval_EvalFrameEx () from /usr/lib/libpython2.7.so.1.0
#9  0xb7683f70 in PyEval_EvalCodeEx () from /usr/lib/libpython2.7.so.1.0
#10 0xb76840c3 in PyEval_EvalCode () from /usr/lib/libpython2.7.so.1.0
#11 0xb769dc0b in run_mod () from /usr/lib/libpython2.7.so.1.0
#12 0xb769eaf2 in PyRun_FileExFlags () from /usr/lib/libpython2.7.so.1.0
#13 0xb769f7cc in PyRun_SimpleFileExFlags () from /usr/lib/libpython2.7.so.1.0
#14 0xb76a0372 in PyRun_AnyFileExFlags () from /usr/lib/libpython2.7.so.1.0
#15 0xb76b18fc in Py_Main () from /usr/lib/libpython2.7.so.1.0
#16 0x08048557 in main ()

重要な場合は、ArchLinuxで最新のPython2.7を使用しています。

4

1 に答える 1

1

これを機能させるには、イベントループを実行する必要があります。これは、使用しているものに応じてQまたはKApplicationを意味します。私は通常KApplicationを使用します。

PyKDE4でのKIOの使用に関する詳細については、KDEサンプルモジュールを参照してください。

https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/bindings/python/kio

于 2011-06-13T08:58:35.760 に答える