【发布时间】:2018-12-04 15:12:28
【问题描述】:
我正在尝试从 python (setup.py) 上的项目制作可执行文件
import sys
import xlrd
import pyodbc
import tkinter as tk
import os.path
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication,QDialog
from PyQt5.uic import loadUi
from PyQt5 import QtGui
from tkinter import filedialog
from datetime import datetime, timedelta
from win32api import GetSystemMetrics
from cx_Freeze import setup, Executable
base = None
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
#os.environ['TCL_LIBRARY'] = r'C:\Users\PQ946KK\AppData\Local\Programs\Python\Python37\tcl\tcl8.6'
#os.environ['TK_LIBRARY'] = r'C:\Users\PQ946KK\AppData\Local\Programs\Python\Python37\tcl\tk8.6'
executables = [Executable("Load File.py",
base=base,
icon="BI Icon.ico")]
packages = ["tkinter","pyodbc","PyQt5","datetime","win32api"]
files = ["BI Icon.ico","Load Excel.ui",
r"C:\Users\PQ946KK\Documents\Leti\Proyectos\PowerBI\Icon\arrow up load.png",
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll')]
options = {
'build_exe': {
'packages':packages,
'include_files':files,
},
}
setup(
name = "LoadFile BI",
options = options,
version = "0.1",
description = 'Ejecutable de Aplicacion Load File',
executables = executables
)
每当我构建时,它只会创建几个文件(只要我记得它应该创建更多文件和文件夹)
(base) C:\Users\XXXXXX\Documents\Leti\Proyectos\PowerBI>python setup.py build
running build
running build_exe
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\lib\site-packages\cx_Freeze\bases\Console.exe -> build\exe.win-amd64-3.6\Load File.exe
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-stdio-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-stdio-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\python36.dll -> build\exe.win-amd64-3.6\python36.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\VCRUNTIME140.dll -> build\exe.win-amd64-3.6\VCRUNTIME140.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-math-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-math-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-locale-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-locale-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-string-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-string-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-runtime-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-runtime-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-convert-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-convert-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-time-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-time-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-environment-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-environment-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-process-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-process-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-heap-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-heap-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-conio-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-conio-l1-1-0.dll
copying C:\Users\PQ946KK\AppData\Local\Continuum\anaconda3\api-ms-win-crt-filesystem-l1-1-0.dll -> build\exe.win-amd64-3.6\api-ms-win-crt-filesystem-l1-1-0.dll
(base) C:\Users\XXXXXX\Documents\Leti\Proyectos\PowerBI>python setup.py build
我已经尝试重新安装 Python、Anaconda 并设置全局变量,但仍然没有得到相同的结果,当然 .exe 文件也不起作用。错误信息:
致命的 Python 错误:Py_Initialize: 无法加载文件系统编解码器 ModuleNotFoundError:没有名为“编码”的模块
我还要提一下,这是我第一次使用单独的 .ui 文件构建文件。
【问题讨论】:
标签: python-3.x user-interface pyqt5 cx-freeze