【问题标题】:cx_Freeze with Tkintercx_Freeze 与 Tkinter
【发布时间】:2017-10-14 03:26:15
【问题描述】:

我是法国人,所以对我的英语感到抱歉。 我实际上创建了一个使用 tkinter、paramiko、telnetlib 和许多其他的 Python 3.6.1 程序,并且我想用 cx_Freeze 创建一个 exe。使用“Hello World”程序可以成功,但是当我尝试仅使用 Tkinter 时,它不起作用。我有一个错误屏幕,因为我在运行 exe 时在终端上看不到超过 0.5 秒。所以我用我的 setup.py 加入了那个屏幕。

setup.py:

import cx_Freeze
import os

os.environ['TCL_LIBRARY'] = r'C:\LOCAL_TO_PYTHON\Python35-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\LOCAL_TO_PYTHON\Python35-32\tcl\tk8.6'

executables= [cx_Freeze.Executable('exeTest.py',)]


cx_Freeze.setup(

    name = "leTest",
    options = {'built.exe':{'includes': ['tkinter','paramiko','telnetlib']}},
    version = "1.0",
    description = "Bonjour !",
    executables = executables,
)

错误:

Traceback (most recent call last):
    File "C:\Python36\lib\site-packages\cx_Freeze\initscripts\__startup.py", in line 12, in <module>
     __import__(name+"__init__")
    File "C:\Python36\lib\site-packages\cx_Freeze\initscripts\Console.py", in line 24, in <module>
      exec(code, m.__dict__)
    File "exeTest.py", line 9, in <module>
    File "C:\Python36\lib\tkinter\__init.py", in line 36, in <module>
     import _tkinter # If this fails your Python may not be configured fot Tk
  ImportError: DLL load failed: The specified module can not be found.

感谢您的阅读,也许是您的帮助

【问题讨论】:

  • 这实际上不是完整的回溯,因此很难诊断,有什么方法可以获得完整的回溯?初步来看,此错误表明您正在尝试导入某些内容但失败了。
  • 我无法发送我的截图 :(
  • 无论如何,您都应该输入屏幕截图中的内容。如果错误出现在图像中并且以后无法搜索,则对遇到相同问题的任何人都没有帮助。
  • 所有的traceback我都写好了

标签: python tkinter cx-freeze


【解决方案1】:

试试这个。很确定这将假定您的 Python 安装是您的 PATH 的一部分。

import sys
import os
from cx_Freeze import setup, Executable
import cx_Freeze
import tkinter
import os.path
import scipy

base = None

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


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\matthew\Downloads\WinPython-64bit-3.5.3.0Qt5\python-3.5.3.amd64\tcl\tcl8.6'
#os.environ['TK_LIBRARY'] = r'C:\Users\matthew\Downloads\WinPython-64bit-3.5.3.0Qt5\python-3.5.3.amd64\tcl\tk8.6'

executables = [cx_Freeze.Executable("exeTest.py", base=base)]
addtional_mods = ['numpy.core._methods', 'numpy.lib.format']

packages = ["idna", "numpy",]
options = {
    'build_exe': {

        'include_files':[
            os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
            os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),
            os.path.dirname(scipy.__file__),

         ],
        'includes': addtional_mods,
        'packages':packages,
    },

}

cx_Freeze.setup(
    name = "letest",
    options = options,
    version = "0.01",
    description = 'Bonjour',
    executables = executables
)

【讨论】:

  • 它像以前一样创建一个 .exe,这没关系,但它不起作用...同样的错误,但在特定窗口中,所以我可以真正阅读它。我只是无法发送图片:(
  • 以下是我在制作 tkinter 应用程序时使用的几乎完全相同的设置。我尝试编辑掉你不需要的东西,但你可以这样尝试。如果它仍然不起作用,我怀疑这是由于您的 python 不是您的 PATH 的一部分:编辑:我无法在 cmets 中发布代码,所以我将编辑我的 asnwer
  • 另外,为了以防万一,我通常会确保在创建另一个之前删除构建文件夹。
猜你喜欢
  • 2011-04-22
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多