python 3.x - एक अन्य कंप्यूटर पर एक फ्रोजन पॉयट ऐप चलाते समय छवियां नहीं दिखा रही हैं




python-3.x pyqt (2)

मेरे पास एक PyQt4 प्रोग्राम है जो मैं cx_freeze का इस्तेमाल कर रहा हूं। मुझे एक समस्या है जब मैं एक QGraphicsPixmapItem, जो इसे 'एक SVG फ़ाइल से बना' pixmap हो रही है, आइटम कोई समस्या नहीं हो जाता है, लेकिन पिक्समैप लोड नहीं करता है तो इस दृश्य में केवल कोई इमेज नहीं है । जो बात मुझे भ्रमित करती है वह यह तब ही होती है जब मैं इसे किसी अन्य कम्प्यूटर पर चला रहा हूं जो एक्सई को बनाया था। जब मैं इसे बनाया कंप्यूटर उस पर पूरी तरह से काम करता है पर exe चलाने यहां तक ​​कि जब भी मैं कंप्यूटर पर इसे चलाने के लिए कंप्यूटर पर स्थापित सभी आवश्यक अजगर घटकों और pyqt घटकों के साथ चलाने की कोशिश करता हूं, अगर यह कंप्यूटर जो इसे बनाया नहीं है, तो pixmap svg फ़ाइल से लोड नहीं है। मुझे यकीन नहीं है कि यह मेरी cx_freeze setup.py फ़ाइल में एक समस्या है या अगर मुझे मुख्य कोड में कुछ बदलने की आवश्यकता है तो कोई मदद या सिर्फ मुझे सही दिशा में इंगित करना महान होगा मेरी भावना यह है कि कुछ गड़बड़ हो रही है जब cx_freeze इसे बना रहा है, तो मैं नीचे अपने setup.py फ़ाइल की सामग्री पेस्ट कर दूँगा। मैं भी पायथन v3.1 का उपयोग कर विंडोज पर चल रहा हूँ।

from cx_Freeze import setup, Executable

files = ['drawings\\FULL', 'drawings\\PANEL', 'data.csv', 'panelData.csv']
binIncludes = ['C:\\Python31\\Lib\\site-packages\\PyQt4\\bin\\QtSvg4.dll']
includes = ['main', 'PunchDialog', 'ArrayDialog', 'PricingDialog', 'FontAndInputDialog', 'PanelSelector', 'PyQt4', 'os', 'sys', 'ctypes', 'csv']
packages = ['drawings']
path = ['C:\\Users\\Brock\\Documents\\Programming\\PanelDesigner\\DrawingFirst', 'C:\\Python31\\Lib', 'C:\\Python31\\Lib\\site-packages', 'C:\\Python31\\DLLs']

setup(
        name = 'PanelBuilder',
        version = '1.0',
        description = 'Allows user to draw custom panel layouts.',
        author = 'Brock Seabaugh',
        options = {'build_exe': {'packages':packages, 'path':path, 'include_files':files, 'bin_includes':binIncludes, 'includes':includes}},
        executables = [Executable('PanelBuilder.py')])

पुनश्च। यहां मेरी फाइल पदानुक्रम है (यदि वह बिल्कुल मदद करता है):

\DrawingFirst
    Main .py file
    All .py files for all custom dialogs used
    \drawings
        some modules used
        \FULL
            A bunch of SVG files used
        \PANEL
            More SVG files used

यह एक गंदी समस्या है जो मैंने खुद को अतीत में चलाया है। मुझे http://www.py2exe.org/index.cgi/Py2exeAndPyQt उद्धरण दें: (मुझे पता है कि आप cx_freeze उपयोग कर रहे हैं लेकिन मुझे यकीन है कि आप अपनी स्क्रिप्ट को अनुकूलित कर सकते हैं)

PyQt4 और छवि लोडिंग (जेपीजी, जीआईएफ, आदि)

PyQt4 उन छवि प्रारूपों को पढ़ने के लिए प्लगइन्स का उपयोग करता है, इसलिए आपको फ़ोल्डर PyQt4 \ plugins \ imageformats को एपडीर \ छवि प्रारूपों पर कॉपी करने की आवश्यकता होगी। ऊपर के मामलों की तरह, आप इसके लिए data_files का उपयोग कर सकते हैं। यह बंडल_फ़ाइलों के साथ काम नहीं करेगा।

यदि प्लग इन तक पहुंचने योग्य नहीं हैं, तो QPixmap.load / loadFromData उन स्वरूपों में एक छवि लोड करते समय गलत होगा।

testapp.py:

from PyQt4 import QtGui, QtSvg
import sys

app = QtGui.QApplication([])
wnd = QtSvg.QSvgWidget()
wnd.load("flower.svg")
wnd.show()
sys.exit(app.exec_())

setup.py:

from cx_Freeze import setup, Executable
files = ['flower.svg']
includes = ['sip', 'PyQt4.QtCore']
setup(
        name = 'Example',
        version = '1.337',
        description = 'Allows user to see what I did there.',
        author = 'something',
        options = {'build_exe': {'include_files':files, 'includes':includes}},
        executables = [Executable('testapp.py')])

मैंने एक विंडोज 7 मशीन पर इस टेस्ट ऐप को बनाया और इसे एक Windows XP मशीन पर कॉपी किया। मुझे किसी भी डीएलएस को कॉपी करने की ज़रूरत नहीं थी - यह उस तरह काम करता था


Google से यहां आने वाले लोगों के लिए: यदि आप केवल क्यूटीवेबकिट का उपयोग करते हैं , तो आपको अपने एप डीर में छवि प्रारूपों डीआईआर (जिसे आप पीवायथोन्डिर \ lib \ site-packages \ PyQt4 \ plugins में मिलते हैं) की प्रतिलिपि बनाने की आवश्यकता होती है। इसमें PyQt4.QtWebKit निर्दिष्ट करना पर्याप्त नहीं है।