ImportError (отсутствуют зависимости ['numpy']) во время выполнения .exe - PullRequest
0 голосов
/ 07 февраля 2019

Я сделал небольшую программу на Python для извлечения данных (файлов .csv) из нескольких сжатых файлов gzip с использованием библиотек Pandas, gzip и shutil.После их извлечения файлы .csv объединяются в один большой уникальный файл .csv.

Моя программа поддерживает версии Python 2.7 и 3.7 .

При сборке .exe для упрощения использования этой маленькой программы и совместимостина компьютерах, на которых не установлен Python, я делаю ошибки, потому что он не работает.

Это основная папка, в которой я выполняю .exe из PyInstaller:

main folder

Примечание. Файлы "00000 (0)" имеют формат .gzip без расширения, внутри которого имеется только один файл .csv, также без расширения.

У вас есть способ решить эту проблему?

Это то, что я получил от терминала во время реального исполнения:

Terminal

Терминальная команда для создания .exe:

pyinstaller.exe --clean --onefile Convierte_Rar_En_Csv_Final.py --name Transforma2 --hidden-import numpy

Версии:

  • Python: 2.7.15
  • pyinstaller:3.4 (для установки этой библиотеки я просто скачал папку с здесь , затем переместил ее на C:\YourPythonEnviroment\Lib\site-packages\PyInstaller-3.4 и, наконец, сделал из терминала, как только япапка PyInstaller-3.4 python setup.py install.)
  • панд: 0.24.0
  • numpy: 1.16.0
  • pytz: 2018.9
  • wxPython 4.0.4
  • setuptools: 40.8.0
  • python-dateutil: 2.8.0

Код моей программы:

def DescomprimeYUne(path):
    import pandas as pd
    import gzip , shutil
    import numpy

    results = pd.DataFrame([])

    for filename in os.listdir(path):
        pathFile = path + filename
        if filename != __file__.split("/")[-1] and not os.path.isdir(pathFile):
            # # Descomprimo fichero
            with gzip.open(pathFile, 'rb') as f_in:
                with open(pathFile + '.csv', 'wb') as f_out:
                    shutil.copyfileobj(f_in, f_out)

            # Borro fichero original
            os.remove(pathFile)

            # Concateno a CSV final
            namedf = pd.read_csv(pathFile + ".csv", skiprows=0)
            results = results.append(namedf)

           # Borro fichero csv
           os.remove(pathFile + '.csv')

    results.to_csv(path + "final.csv")
if __name__ == "__main__":
DescomprimeYUne("./")

Iпоследовал также этот урок , но у меня это не сработало.

1 Ответ

0 голосов
/ 07 февраля 2019

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

Cx_freeze работает на любой ОС, на которой работает python, и поддерживает 2.7+или 3+.Я настоятельно рекомендую посмотреть этот урок, он мне очень помог.https://www.youtube.com/watch?v=HosXxXE24hA

Вот пример сценария установки:

import cx_Freeze 
from cx_Freeze import *
import sys 
import os


base = None

if sys.platform =='win32':
    base = "Win32GUI"

executables = [cx_Freeze.Executable("DescomprimeYUne.py", base=base)]

# Stating what modules and files our app needs so they can be included in the build
cx_Freeze.setup(
    name = "DescomprimeYUne", # Name of exe
    options = {"build_exe":{"packages":["numpy", "pandas", "gzip", "shutil"], # Include packages used here
                          "include_files":["filename"]}}, # optional you can include any files your script needs here
    version = "0.01",
    description="DescomprimeYUne",
    executables = executables
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...