簡體   English   中英

無法執行使用PyInstaller構建的python腳本

[英]Failed to execute python script built using PyInstaller

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腳本。 該腳本應根據matplotlib創建的圖創建一個PNG文件。 當我在spyder IDE上運行它時,它可以正常工作,但是當我使用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

我嘗試遵循Petr Szturc的方法,並創建了一個hooks-pandas.py文件,並使用hiddenimports = ['pandas._libs.tslibs.tslibs.np_datetime']但繼續獲得相同的追溯。

水蟒4.5.11

Python 3.6

我想我過去也有過同樣的錯誤。

我的項目中有一個pyinstaller_hooks目錄,並帶有以下代碼的文件hook-pandas.py

from PyInstaller.utils.hooks import collect_submodules

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

然后在運行PyInstaller時,我在--additional-hooks-dir目錄中傳遞--additional-hooks-dir

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

這樣可以很容易地識別出我對鈎子所做的更改,而不是將它們混合到PyInstaller文件夾中,並且還可以將它們檢入任何git repo中。 我認為這比鏈接中建議的方法干凈得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM