2015-03-17 10 views
5

मैं एक काफी सरल पायथन मॉड्यूल है कि मैं एक Windows exe फ़ाइल में संकलित करने के लिए कोशिश कर रहा हूँ है। मेरी लिपि में मैं wxPython और Pandas पुस्तकालयों का उपयोग कर रहा हूँ। PyInstaller exe फ़ाइल जो उत्पन्न होती है केवल तभी काम करता है जब खुलता है जब पांडस लाइब्रेरी को मेरे मॉड्यूल से बाहर रखा जाता है।PyInstaller और पांडा

जब मैं --onefile का उपयोग करें या मैं एक ही मुद्दा हो रही है - PyInstaller में onedir। मुझे ऑनलाइन पता चला कि PyInstaller (2.1) के 'नए' संस्करण को इस बग का ख्याल रखना चाहिए था। क्या किसी के पास कोई विचार है कि क्या करना है?

PyInstaller: संस्करण 2.1 पांडा: संस्करण 0.15.2 पायथन: संस्करण 2.7

धन्यवाद

उत्तर

6

मैं एक ही मुद्दे में भाग गया। मैं इसे इस Hello.py की तरह एक सरल स्क्रिप्ट के लिए नीचे उबला हुआ:

# -*- mode: python -*- 

block_cipher = None 

def get_pandas_path(): 
    import pandas 
    pandas_path = pandas.__path__[0] 
    return pandas_path 

a = Analysis(['Hello.py'], 
     pathex=['C:\\ScriptsThatRequirePandas'], 
     binaries=None, 
     datas=None, 
     hiddenimports=[], 
     hookspath=None, 
     runtime_hooks=None, 
     excludes=None, 
     win_no_prefer_redirects=None, 
     win_private_assemblies=None, 
     cipher=block_cipher) 

dict_tree = Tree(get_pandas_path(), prefix='pandas', excludes=["*.pyc"]) 
a.datas += dict_tree 
a.binaries = filter(lambda x: 'pandas' not in x[0], a.binaries) 

pyz = PYZ(a.pure, a.zipped_data, 
     cipher=block_cipher) 
exe = EXE(pyz, 
     a.scripts, 
     exclude_binaries=True, 
     name='Hello', 
     debug=False, 
     strip=None, 
     upx=True, 
     console=True) 
scoll = COLLECT(exe, 
      a.binaries, 
      a.zipfiles, 
      a.datas, 
      strip=None, 
      upx=True, 
      name='Hello') 

:

import pandas 
print "hello world, pandas was imported successfully!" 

पांडा रन-टाइम में आयात करने के लिए प्राप्त करने के लिए सही ढंग से मैं निम्नलिखित करने के लिए Hello.spec को संशोधित करने के लिए किया था मैं तब भाग गया:

$pyinstaller Hello.spec --onefile 

कमांड प्रॉम्प्ट से और मुझे 'हैलो वर्ल्ड' संदेश मिला। मैं अभी भी पूरी तरह समझ नहीं पा रहा हूं कि यह क्यों जरूरी है। मेरे पास पांडा का एक कस्टम निर्माण है - जो एमकेएल पुस्तकालयों में लगा हुआ है - लेकिन यह मुझे स्पष्ट नहीं है कि यह रन विफलता का कारण बन रहा है।

इस उत्तर यहाँ के समान है: Pyinstaller not correclty importing pycripto... sometimes

5

मैं pyinstaller संस्करण 3.3 के साथ एक समान मुद्दा था।/हुक/hook-pandas.py कहा जाता है और सामग्री जिसका विवरण प्रतिबद्ध here रख दिया और अजगर सेटअप के माध्यम से pyinstaller मैन्युअल पुनर्स्थापित समाधान एक लापता hiddenimport हुक के रूप में वर्णित here

मैं Pyinstaller के तहत एक नया फ़ाइल बनाई थी था Pypyer निर्देशिका में .py स्थापित करें।

समस्या तब नहीं आई जब मैंने अपने पैंडस स्क्रिप्ट से exe बनाया - poneinstaller के साथ --onefile विकल्प का उपयोग कर।

+0

यह मेरे लिए काम किया हालांकि मैं Pyinstaller पुनर्स्थापित करने के लिए नहीं था। – kaisquared