【发布时间】:2018-11-09 00:17:59
【问题描述】:
我正在使用 cx_freeze 将我的 Python 脚本打包为独立的可执行文件。 exe 在打包的机器上运行良好(使用 python 3.5 和所有相关包)。
但是当我将创建的文件夹 cx_freeze 复制到另一台机器时,我得到了这个错误:
我的 cx_freeze 脚本:
import sys
import numpy
import os.path
from cx_Freeze import setup, Executable
os.environ['TCL_LIBRARY'] = r'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'
setup(
name = "DocSum",
version = "1.0",
options = {"build_exe": {"packages":["idna","asyncio", "encodings","numpy", "jinja2.ext"]}},
description = "DocSumRESTfulServer",
executables = [Executable("DocSumRESTfulServer.py", base = None)]
)
知道可能是什么原因吗?我认为exe应该是独立的(在没有python的机器上运行)。我错了吗?
【问题讨论】:
-
除非你出于某种原因需要使用
cx_freeze,否则你也可以试试 PyInstaller,它做同样的事情。 -
是的 - 我上次使用 cx_freeze 时 :) 存在不包括 MS redist 等所有依赖项的问题 - 所以你显然错过了另一台电脑上的一些东西,你必须手动添加到包中做你的 prog 的安装程序
-
感谢您的回答。我还得到了
underthesea和sumy的依赖项,它们没有包含在 pyinstaller 中。我比较了机器之间所有安装的组件,它们是相同的。我真的很迷茫,如果你有任何其他想法,我会很高兴听到。 -
如果有帮助:我将 2 个 exe 打包在 2 台不同的机器上,它们都只能在打包的机器上工作,而不能在另一台机器上工作。