簡體   English   中英

Python cx_freeze錯誤

[英]Python cx_freeze error

Python版本:3.6軟件包的最新版本

您好,我需要我的安裝程序幫助,我有安裝文件,但是它不起作用,我也不知道為什么

import cx_Freeze
import sys
import matplotlib

base = None

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

executables = [cx_Freeze.Executable("python.py", base=base,)]

cx_Freeze.setup(
    name = "music-Client",
    options = {"build_exe": {"packages":["tkinter","matplotlib","Pygame"]}},
    version = "1",
    description = "hello",
    executables = executables
    )

當我嘗試使用cmd進行構建時,會出現這個非常長的錯誤

Traceback (most recent call last):
  File "setup.py", line 17, in <module>
    executables = executables
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\dist.py", line 349, in setup
    distutils.core.setup(**attrs)
  File "E:\Python\Lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "E:\Python\Lib\distutils\dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "E:\Python\Lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "E:\Python\Lib\distutils\command\build.py", line 135, in run
    self.run_command(cmd_name)
  File "E:\Python\Lib\distutils\cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "E:\Python\Lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\dist.py", line 219, in run
    freezer.Freeze()
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\freezer.py", line 616, in Freeze
    self.finder = self._GetModuleFinder()
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\freezer.py", line 342, in _GetModuleFinder
    finder.IncludePackage(name)
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\finder.py", line 659, in IncludePackage
    module = self._ImportModule(name, deferredImports)
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\finder.py", line 311, in _ImportModule
    deferredImports, namespace = namespace)
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\finder.py", line 404, in _InternalImportModule
    parentModule, namespace)
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\finder.py", line 417, in _LoadModule
    namespace)
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\finder.py", line 486, in _LoadPackage
    self._LoadModule(name, fp, path, info, deferredImports, parent)
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\finder.py", line 464, in _LoadModule
    self._RunHook("load", module.name, module)
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\finder.py", line 537, in _RunHook
    method(self, *args)
  File "E:\Projekty\venv\lib\site-packages\cx_Freeze\hooks.py", line 615, in load_tkinter
    tclSourceDir = os.environ["TCL_LIBRARY"]
  File "E:\Projekty\venv\lib\os.py", line 669, in __getitem__
    raise KeyError(key) from None
KeyError: 'TCL_LIBRARY'

我不知道該如何解決,有人可以幫助我嗎? 我真的需要幫助,謝謝您的回答

您需要包括tkinter庫。 這可以通過os.environ()方法輕松完成。

它看起來應該像這樣:

import os
os.environ["TCL_LIBRARY"] = "<PathToPython>/Python36-32/tcl/tcl8.6"
os.environ["TK_LIBRARY"] = "<PathToPython>/Python36-32/tcl/tk8.6"

在您的腳本中,它可能看起來像這樣:

import cx_Freeze
import sys
import os
os.environ["TCL_LIBRARY"] = "<PathToPython>/Python36-32/tcl/tcl8.6"
os.environ["TK_LIBRARY"] = "<PathToPython>/Python36-32/tcl/tk8.6"

base = None

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

executables = [cx_Freeze.Executable("python.py", base=base,)]

cx_Freeze.setup(
    name = "music-Client",
    options = {"build_exe": {"packages":["tkinter","matplotlib","Pygame"]}},
    version = "1",
    description = "hello",
    executables = executables
    )

請注意,我刪除了import mathplotlib因為在安裝腳本中import mathplotlib ,通常會檢測到依賴性。


如果這還不夠:

很多時候會返回另一個錯誤。 這是缺少的運行時錯誤。 您可以使用include_files方法包括運行時(如文檔中所述)。 我們可以在此行中包含以下語句:

options = {"build_exe": {"packages":["tkinter","matplotlib","Pygame"]}},

像這樣:

options = {"build_exe": {"packages":["tkinter","matplotlib","Pygame"], "include_files":["<PathToPython>/Python36-32/DLLs/tk86t.dll", "<PathToPython>/Python36-32/DLLs/tcl86t.dll"]}},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM