Vấn đề:
Tôi không thể phân phối một cx_freeze được tạo .exe cho một máy khác, vì có vẻ như exe chứa các tham chiếu đến các đường dẫn tuyệt đối trên máy đã tạo .exe. Tôi cũng phải bao gồm vcr nb140.dll direktly, vì không "include_msvcr": True
sao chép tệp.
Thiết lập
- Thắng 10
- Python 3.7.2
- cx_freeze 6.0
- KHÔNG virtualenv (dường như không quan trọng, tôi đã thử nó với venv)
Câu hỏi tương tự
Câu hỏi này đã được hỏi trước đây trong một hình thức tương tự, nhưng không có câu trả lời: cx_Freeze sao chép đường dẫn
Nhật ký lỗi
Khi bắt đầu tập lệnh, các lỗi sau xuất hiện (không thể sao chép / dán từ cửa sổ, vì vậy tôi chia sẻ hình ảnh). Bạn có thể thấy các tham chiếu đến một đường dẫn tuyệt đối C:\Program Files (x86)\Python....
rõ ràng không có trên máy khác.
kịch bản đóng băng
from os.path import dirname
from cx_Freeze import setup, Executable
from config import settings
import os.path
import sys
import glob
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
DEPENDENCY_DIR = os.path.join(os.getcwd(), 'dependencies')
os.environ['TCL_LIBRARY'] = os.path.join(DEPENDENCY_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(DEPENDENCY_DIR, 'tcl', 'tk8.6')
packages = ["sepa", "datev", "atexit", "shiboken2", "PySide2"]
includes = []
excludes = ["Pyside2.Qt5WebEngineCore.dll"]
includefiles = ['qt', 'settings', 'config', os.path.join(DEPENDENCY_DIR, 'DLLs', 'tk86t.dll'),
os.path.join(DEPENDENCY_DIR, 'DLLs', 'tcl86t.dll'), os.path.join(DEPENDENCY_DIR, 'DLLs', 'vcruntime140.dll')]
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": packages,
"excludes": excludes,
"includes": includes,
"include_files": includefiles,
"optimize": 2,
"include_msvcr": True}
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(name="sepa_converter",
version=settings.version,
description="Programm zum Konvertiern von SEPA Dateien zum importieren in Buchhaltungsprogramme",
options={"build_exe": build_exe_options},
executables=[Executable("export_gui.py", base=base)])
#Debug DLLs von Pyside2 löschen
tmp = glob.glob("build/*/Pyside2/*d.dll")
for i in tmp:
os.remove(i)
tmp = glob.glob("build/*/Pyside2/*/*/*d.dll")
for i in tmp:
os.remove(i)
filelist = ['Qt5WebEngineCore.dll', 'icudt54.dll', 'opengl32sw.dll', 'Qt5Designer.dll', 'd3dcompiler_47.dll', 'Qt5Quick.dll']
for f in filelist:
for i in glob.glob("build/*/Pyside2/%s" % f):
os.remove(i)
Vấn đề mở liên quan Github
—
Edeki Okoh
Tôi đang có cùng một vấn đề.
—
jonathan9879