python PyInstaller में 'pandas._libs.tslibs.timedeltas' नाम का कोई मॉड्यूल नहीं है




windows python-3.x (4)

मैं खिड़कियों के लिए PyInstaller (विकास संस्करण) का उपयोग करके एक पायथन स्क्रिप्ट को एक exe में लपेटने की कोशिश कर रहा हूं।

स्क्रिप्ट पंडों का उपयोग करती है और मैं निर्वासन चलाते समय एक त्रुटि में रहा हूं।

Traceback (most recent call last):   File "site-packages\pandas\__init__.py", line 26, in <module>   File "C:\Users\Eddie\Anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "site-packages\pandas\_libs\__init__.py", line 4, in <module>   File "C:\Users\Eddie\Anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
    module = loader.load_module(fullname)   File "pandas/_libs/tslib.pyx", line 1, in init pandas._libs.tslib ModuleNotFoundError: No module named 'pandas._libs.tslibs.timedeltas'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):   File "G5k Version file Extract (with tkinter).py", line 15, in <module>   File "C:\Users\Eddie\Anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "site-packages\pandas\__init__.py", line 35, in <module> ImportError: C extension: No module named 'pandas._libs.tslibs.timedeltas' not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace --force' to build the C extensions first.

मैंने पंडों के बिना कार्यक्रमों के लिए यह करने की कोशिश की है और सब कुछ ठीक था।

यह पायथन 2 के लिए पहले से हल किए गए एक अन्य प्रश्न के समान है, लेकिन मैं पायथन 3 का उपयोग कर रहा हूं और यह समाधान परिवर्तित .spec फ़ाइल प्रारूप के कारण उसी तरह लागू नहीं होता है।

अजगर 3.6
PyInstaller - संस्करण 3.3
पंडों - संस्करण 0.20.3


मैं "- आयात-आयात" ध्वज का उपयोग करके इस समस्या को हल करने में कामयाब रहा। उम्मीद है कि यह किसी और के लिए उपयोगी हो सकता है जो इस धागे के पार आता है।

pyinstaller --onefile --hidden-import pandas._libs.tslibs.timedeltas myScript.py

यदि आप एनाकोंडा का उपयोग कर रहे हैं, तो यह अत्यधिक संभावना है कि जब आप कुछ पैकेज को अनइंस्टॉल करने की कोशिश कर रहे थे, तो इससे पांडा की निर्भरता बाधित हो गई है और आवश्यक स्क्रिप्ट प्राप्त करने में असमर्थ है। यदि आप सिर्फ conda install pandas चलाते हैं तो आप एक और त्रुटि के साथ समाप्त हो सकते हैं:

module 'pandas' has no attribute 'compat'

तो, पांडा की स्थापना रद्द करने और पुनर्स्थापना करने की कोशिश करें, conda uninstall pandas करें, इसे फिर से स्थापित करें और इसे स्थापित करें। दूसरी ओर, यदि आप एनाकोंडा का उपयोग नहीं कर रहे हैं।, कमांड प्रॉम्प्ट पर वही करने की कोशिश करें, जो पायथन स्क्रिप्ट्स फ़ोल्डर pip uninstall pandas & pip install pandas ओर इशारा करता है।

ज्यादातर बार, यह समस्या को हल करना चाहिए। बस सभी संभावनाओं को कवर करने के लिए, पांडा स्थापित करने के बाद एनाकोंडा से स्पाइडर लॉन्च करना न भूलें।


मुझे यकीन नहीं है कि यह आपकी मदद कर सकता है, लेकिन आपके द्वारा मेरे लिए काम का उल्लेख करने के बाद के समाधान का अनुसरण कर रहा है मेरे साथ विंडोज 7 पर अजगर 3.6 pinstaller 3.3 और पांडा 0.21.0।

इसलिए विश्लेषण के बाद इसे केवल ऐनक फाइल में जोड़ें:

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

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)

इसके अलावा मेरी कल्पना फ़ाइल प्रारूप आपके द्वारा उल्लिखित पोस्ट के समान है।


PyInstaller 3.3, Pandas 0.21.0, Python 3.6.1।

मैं PyInstaller को अभी तक प्रकाशित / प्रतिबद्ध फिक्स नहीं करने के लिए इस धन्यवाद को हल करने में सक्षम था, this और this । और इसे एक निष्पादन योग्य फ़ाइल में पैक करने की क्षमता रखते हुए।

मूल रूप से:

  1. PyInstaller फ़ोल्डर का पता लगाएँ .. \ Nts, उदाहरण के लिए C:\Program Files\Python\Lib\site-packages\PyInstaller\hooks

  2. सामग्री के साथ फ़ाइल हुक-pandas.py बनाएँ (या आपकी त्रुटि के आधार पर ऐसा ही कुछ):

    hiddenimports = ['pandas._libs.tslibs.timedeltas']
  3. इसे सहेजें + मैंने .spec फ़ाइल को हटा दिया है, सुनिश्चित करने के लिए फ़ोल्डर्स का निर्माण और डिस्टर्ब करें।

  4. pyinstaller -F my_app.py. चलाएं pyinstaller -F my_app.py.

यह सुधार तब तक काम करना चाहिए जब तक आप PyInstaller को अपग्रेड या पुनर्स्थापित नहीं करते हैं। इसलिए आपको .spec फ़ाइल को संपादित करने की आवश्यकता नहीं है।

शायद वे जल्द ही हमारे लिए फिक्स शामिल करेंगे! :)





pyinstaller