python - لا توجد وحدة باسم "pandas._libs.tslibs.timedeltas" في PyInstaller




windows python-3.x (3)

PyInstaller 3.3، Pandas 0.21.0، Python 3.6.1.

كنت قادرًا على حل هذا بفضل الإصلاح المنشور / غير الملتزم به لـ PyInstaller ، انظر this وذاك و الحفاظ على القدرة على حزمة في ملف قابل للتنفيذ واحد.

Basicly:

  1. حدد موقع المجلد PyInstaller .. \ hooks ، على سبيل المثال C:\Program Files\Python\Lib\site-packages\PyInstaller\hooks .

  2. قم بإنشاء ربط ملف - pandas.py مع محتويات (أو أي شيء مشابه بناءً على الخطأ الخاص بك):

    hiddenimports = ['pandas._libs.tslibs.timedeltas']
  3. احفظه + قمت بحذف ملف. spec ، وبناء مجلدات dist فقط للتأكد.

  4. تشغيل pyinstaller -F my_app.py.

يجب أن يعمل هذا الإصلاح طالما أنك لا تقوم بترقية PyInstaller أو إعادة تثبيته. لذلك لا تحتاج إلى تعديل ملف. spec.

ربما سوف تشمل الإصلاح عاجلا بالنسبة لنا! :)

أحاول التفاف برنامج نصي Python في إكس باستخدام PyInstaller (إصدار تطوير) للنوافذ.

يستخدم البرنامج النصي Pandas وقد واجهت خطأً عند تشغيل 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.

لقد حاولت القيام بذلك للبرامج دون الباندا وكان كل شيء على ما يرام.

هذا مشابه جدًا لسؤال آخر تم حله بالفعل في Python 2 ، لكنني أستخدم Python 3 ولا ينطبق هذا الحل بنفس الطريقة بسبب تنسيق ملف .spec الذي تم تغييره.

بيثون 3.6
PyInstaller - الإصدار 3.3
الباندا - الإصدار 0.20.3


إذا كنت تستخدم Anaconda ، فمن المحتمل جدًا أنه عندما كنت تحاول إلغاء تثبيت بعض الحزم ، أدى ذلك إلى تعطيل اعتماد الباندا وعدم القدرة على الحصول على البرنامج النصي المطلوب. إذا قمت فقط بتشغيل conda install pandas فقد ينتهي بك الأمر إلى حدوث خطأ آخر:

module 'pandas' has no attribute 'compat' .

لذا ، حاول إلغاء تثبيت وإعادة تثبيت conda uninstall pandas ، قم conda install pandas مرة أخرى باستخدام conda install pandas مما سيؤدي إلى حل المشكلة. من ناحية أخرى ، إذا كنت لا تستخدم Anaconda. ، فحاول القيام بنفس الشيء في موجه الأوامر مع الإشارة إلى Python scripts folder pip uninstall pandas & pip install pandas .

في معظم الأحيان ، هذا يجب أن يحل المشكلة. فقط لتغطية جميع الاحتمالات ، لا تنسى إطلاق سبايدر من أناكوندا بعد تثبيت الباندا.


لست متأكدًا من أنه قد يساعدك ولكن باتباع الحل في المنشور الذي ذكرته ، قم بالعمل مع python 3.6 pyinstaller 3.3 و pandas 0.21.0 على windows 7.

إضافة هذا إلى ملف المواصفات بعد التحليل:

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