Не удалось выполнить скрипт Python, созданный с помощью PyInstaller - PullRequest
0 голосов
/ 24 сентября 2018
Traceback (most recent call last):
  File "site-packages\pandas\__init__.py", line 26, in <module>
  File "C:\Users\adas\AppData\Local\Continuum\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\adas\AppData\Local\Continuum\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
    module = loader.load_module(fullname)
  File "pandas\_libs\tslibs\conversion.pxd", line 11, in init pandas._libs.tslib
  File "C:\Users\adas\AppData\Local\Continuum\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
    module = loader.load_module(fullname)
  File "pandas\_libs\tslibs\conversion.pyx", line 1, in init pandas._libs.tslibs.conversion
ModuleNotFoundError: No module named 'pandas._libs.tslibs.np_datetime'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "fetchall2.py", line 5, in <module>
    import pandas as pd
  File "C:\Users\adas\AppData\Local\Continuum\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.np_datetime' 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.
[283516] Failed to execute script fetchall2

Я пытаюсь выполнить сценарий Python, который я написал.Сценарий должен создавать файл PNG на основе графика, созданного matplotlib.Он отлично работает, когда я запускаю его в IDE spyder, но не удается, когда я собираю его с помощью PyInstaller.

с использованием этих импортов

import MySQLdb
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Agg')
import pandas as pd
from sklearn.preprocessing import Imputer, LabelEncoder, OneHotEncoder, StandardScaler
from sklearn import svm
from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LinearRegression

Я пытался следовать Метод Петра Штурца и создал файл hooks-pandas.py и с hiddenimports = ['pandas._libs.tslibs.tslibs.np_datetime'], но продолжаю получать ту же трассировку.

Anaconda 4.5.11

Python 3.6

1 Ответ

0 голосов
/ 24 сентября 2018

Я думаю, что у меня была та же ошибка в прошлом.

У меня есть каталог pyinstaller_hooks в моем проекте и файл hook-pandas.py со следующим кодом:

from PyInstaller.utils.hooks import collect_submodules

hiddenimports = collect_submodules('pandas._libs.tslibs')

Затем при запуске PyInstaller я передаю каталог в --additional-hooks-dir:

pyinstaller --additional-hooks-dir pyinstaller_hooks your_python_file.py

Это позволяет легко определить, какие изменения я сделал для хуков, вместо того, чтобы смешивать их в папку PyInstaller, и они такжепроверяются в любом git-репо.Я думаю, что это намного чище, чем метод, предложенный в вашей ссылке.

...