[英]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.