cx_freeze - 可执行文件仍在本地目录中查找

Posted

技术标签:

【中文标题】cx_freeze - 可执行文件仍在本地目录中查找【英文标题】:cx_freeze - executable still looking in local directories 【发布时间】:2017-04-24 12:15:02 【问题描述】:

我上周开始使用 Python 是为了让我的工作更轻松。 为了使我的工作对办公室的其他人有利,我决定使用 cx_freeze 创建一个可执行文件。

在解决了很多小的依赖问题等等之后,我终于可以让我的 .exe 文件在在我的计算机上正常运行了。 不幸的是,当尝试在其他人的计算机上启动 .exe 文件时(我是唯一使用 python 的人,这就是我构建 .exe 文件的原因)出现以下错误: error message - missing dependencies

我一直在互联网上寻找我的问题的答案,但我找不到和我有同样问题的人。

技术信息: 我用的是Win10、python3.6和cx_freeze 5.0.1!

我的代码非常基础,只绘制数据然后输出 png 文件。在我的设置下方:

import sys
import os
import matplotlib
import scipy
from cx_Freeze import setup, Executable
from multiprocessing.context import Process

os.environ['TCL_LIBRARY'] = r'C:\Users\gmignot\AppData\Local\Continuum\Anaconda3\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\gmignot\AppData\Local\Continuum\Anaconda3\tcl\tk8.6'

includefiles = ['ColoredMapInput.csv',r"C:\Users\gmignot\AppData\Local\Continuum\Anaconda3\DLLs\tcl86t.dll",r"C:\Users\gmignot\AppData\Local\Continuum\Anaconda3\DLLs\tk86t.dll", os.path.dirname(scipy.__file__)]

setup(
    name = Test1",
    version = "0.1",
    description = "First attempt to python",
    options = 'build_exe': 'include_files':includefiles,"packages": ['numpy','pandas','numpy.lib.format'],'include_msvcr': True,"includes":['matplotlib.backends.backend_tkagg','tkinter','multiprocessing'], 
    executables = [Executable("first_attempt.py",base = "Win32GUI")])

看起来 .exe 文件一直在本地目录中寻找 numpy(当 Pandas 需要时)。但我的构建文件夹中有 numpy 文件夹...

你知道这个问题可能来自哪里吗? 任何帮助将不胜感激 :)。

非常感谢和问候,

gmignot

【问题讨论】:

大家好!几个星期以来,我一直在寻找解决方案,但我找不到任何有同样问题的人。看起来它来自 Pandas 对 numpy 的调用。但我不知道如何告诉它查看构建文件夹而不是我的本地库。非常感谢您的时间。问候,gmignot 我知道这是一个老问题,这并没有真正提供答案,但这里是:在“它看起来像 .exe 文件一直在本地目录中查找”,我根据 github.com/anthony-tuininga/cx_Freeze/issues/214 的讨论,认为它只是 看起来 像 cx_freeze 正在看那里。这意味着它实际上是在其本地构建中寻找 numpy,但它显示程序被冻结时 numpy 所在的目录。 【参考方案1】:

我使用 linux,但我确定您必须将“gmignot”用户替换为包含您的用户名的环境变量。在 linux 中是 HOME,我不知道在 Windows 上。在 python 类型上使用环境变量os.environ['variable_name']

【讨论】:

嗨!非常感谢您的快速回答。我使用环境变量来访问正确的 TCL 和 TK 库。如果我错了,请纠正我:使用我的用户名可以访问我想包含在我的 .exe 中的库。构建完成后,exe 文件和库应该只引用“构建”文件夹中包含的其他库。那么使用环境变量有什么意义呢?对不起,缺乏知识......问候,

以上是关于cx_freeze - 可执行文件仍在本地目录中查找的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_Freeze 构建可执行文件时出错:IndexError: tuple index out of range

记录使用cx_Freeze打包Python成exe可执行程序

cx_freeze 无法构建 numpy 可执行文件

使用 cx_Freeze 创建可执行文件后不断收到“filedialog”错误

如何将 cx_Freeze 可执行文件的 .pyd 和子文件夹与可执行文件分开放在一个文件夹中

图像目录和cx_Freeze