Tkinter,cx_freeze 和 PyCharm
Tkinter,cx_freeze and PyCharm
I°)应用描述
我在python3做了一个程序。这是一个使用 sql 中的数据库的程序。我使用 logiciel Py Charm 社区来做应用程序。我用 python 中的命令创建了一个特殊文件夹,其中 sql 中的所有序列都在文件夹 Communicateddb 中
每个 GI(图形界面)都是一个 class,每个 GI 都有自己的文件。
我使用以下软件包:
- ttkwidgets
- 报告实验室
- sqlite3
- tkinter
- Cx_freeze
II°)问题
我使用 cx_freeze 来冻结我的程序。您可以在本段之后看到设置。我的问题是什么?当我冻结程序并且我 运行 它(在冻结之后)我有很多警告消息告诉我:
- ModuleNotFoundError:没有名为 'tkinter'
的模块
- ModuleNotFoundError:没有名为 'ttkwidgets'
的模块
- ModuleNotFoundError:没有名为 'PIL'
的模块
- ModuleNotFoundError:没有名为 'reportlab'
的模块
- ModuleNotFoundError:没有名为 'Communicationddb'
的模块
我可以解决问题。我将 tkinter、ttkwidgets 中的文件夹复制到 lib 文件夹中。我可以解决问题并且应用程序可以正常工作,但我想了解如何解决它。
这里是有效的设置(当我说它有效时,我需要手动添加文件夹)
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
icone = "icone_ip.ico"
options = {
'build_exe': {
'includes': ['atexit','reportlab','Communicationbdd']
}
}
executables = [
Executable('BouclePrincipale.py', base="Win32GUI",icon=icone)
]
setup(name='ALCOIP',
version='1.3',
author="Dr MARCUCCI Charles",
description='Outil de saisir des IP',
executables=executables
)
我尝试用另一个代码来设置这个
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Python 3
"""
Icone sous Windows: il faut:
=> un xxx.ico pour integration dans le exe, avec "icon=xxx.ico"
=> un xxx.png pour integration avec PyQt4 + demander la recopie avec includefiles.
"""
import sys, os
from cx_Freeze import setup, Executable
#############################################################################
# preparation des options
# chemins de recherche des modules
# ajouter d'autres chemins (absolus) si necessaire: sys.path + ["chemin1", "chemin2"]
path = sys.path
# options d'inclusion/exclusion des modules
includes = ['atexit','reportlab','Communicationbdd'] # nommer les modules non trouves par cx_freeze
excludes = []
packages = [] # nommer les packages utilises
# copier les fichiers non-Python et/ou repertoires et leur contenu:
includefiles = []
if sys.platform == "win32":
base = 'Win32GUI'
# includefiles += [...] : ajouter les recopies specifiques à Windows
elif sys.platform == "linux2":
pass
# includefiles += [...] : ajouter les recopies specifiques à Linux
else:
pass
# includefiles += [...] : cas du Mac OSX non traite ici
# pour que les bibliotheques binaires de /usr/lib soient recopiees aussi sous Linux
binpathincludes = []
if sys.platform == "linux2":
binpathincludes += ["/usr/lib"]
# niveau d'optimisation pour la compilation en bytecodes
optimize = 0
# si True, n'affiche que les warning et les erreurs pendant le traitement cx_freeze
silent = True
# construction du dictionnaire des options
options = {
"includes": includes,
"excludes": excludes,
"packages": packages,
"include_files": includefiles
}
# pour inclure sous Windows les dll system de Windows necessaires
if sys.platform == "win32":
options["include_msvcr"] = True
#############################################################################
# preparation des cibles
base = None
if sys.platform == "win32":
base = "Win32GUI" # pour application graphique sous Windows
# base = "Console" # pour application en console sous Windows
icone = None
if sys.platform == "win32":
icone = "icone_ip.ico"
cible_1 = Executable(
Executable('BouclePrincipale.py', base="Win32GUI",icon=icone)
)
#############################################################################
# creation du setup
setup(
name="ALCOIp",
version="1.00",
description="Permet la saisi des IP",
author="Dr MARCUCCI Charles",
options={"build_exe": options},
executables=[cible_1]
)
而且我有这个错误信息:
p = os.fspath(p)
类型错误:预期的 str、字节或 os.PathLike 对象不可执行
我认为 py 的魅力和 PyCharm 的工作原理是 link。我试着替换
includes = ['atexit','reportlab','Communicationbdd']
来自
includes = ['atexit','venv/Lib/site-packages/reportlab','Communicationbdd']
但是当我冻结应用程序时无法 运行 我遇到错误 ModuleNotFoundError:没有名为 'reportlab'
的模块
III°)问题
如何处理这个错误?需要更换集成开发环境吗?
感谢您以后的回答
我找到了答案....当我添加一个包时,它只在 PyCharm 上...我使用 pip 安装在 python 而不是只在 PyCharm 上。
我再次午餐我的构建,它就像一个魅力
I°)应用描述
我在python3做了一个程序。这是一个使用 sql 中的数据库的程序。我使用 logiciel Py Charm 社区来做应用程序。我用 python 中的命令创建了一个特殊文件夹,其中 sql 中的所有序列都在文件夹 Communicateddb 中 每个 GI(图形界面)都是一个 class,每个 GI 都有自己的文件。 我使用以下软件包:
- ttkwidgets
- 报告实验室
- sqlite3
- tkinter
- Cx_freeze
II°)问题
我使用 cx_freeze 来冻结我的程序。您可以在本段之后看到设置。我的问题是什么?当我冻结程序并且我 运行 它(在冻结之后)我有很多警告消息告诉我:
- ModuleNotFoundError:没有名为 'tkinter' 的模块
- ModuleNotFoundError:没有名为 'ttkwidgets' 的模块
- ModuleNotFoundError:没有名为 'PIL' 的模块
- ModuleNotFoundError:没有名为 'reportlab' 的模块
- ModuleNotFoundError:没有名为 'Communicationddb' 的模块
我可以解决问题。我将 tkinter、ttkwidgets 中的文件夹复制到 lib 文件夹中。我可以解决问题并且应用程序可以正常工作,但我想了解如何解决它。
这里是有效的设置(当我说它有效时,我需要手动添加文件夹)
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
icone = "icone_ip.ico"
options = {
'build_exe': {
'includes': ['atexit','reportlab','Communicationbdd']
}
}
executables = [
Executable('BouclePrincipale.py', base="Win32GUI",icon=icone)
]
setup(name='ALCOIP',
version='1.3',
author="Dr MARCUCCI Charles",
description='Outil de saisir des IP',
executables=executables
)
我尝试用另一个代码来设置这个
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Python 3
"""
Icone sous Windows: il faut:
=> un xxx.ico pour integration dans le exe, avec "icon=xxx.ico"
=> un xxx.png pour integration avec PyQt4 + demander la recopie avec includefiles.
"""
import sys, os
from cx_Freeze import setup, Executable
#############################################################################
# preparation des options
# chemins de recherche des modules
# ajouter d'autres chemins (absolus) si necessaire: sys.path + ["chemin1", "chemin2"]
path = sys.path
# options d'inclusion/exclusion des modules
includes = ['atexit','reportlab','Communicationbdd'] # nommer les modules non trouves par cx_freeze
excludes = []
packages = [] # nommer les packages utilises
# copier les fichiers non-Python et/ou repertoires et leur contenu:
includefiles = []
if sys.platform == "win32":
base = 'Win32GUI'
# includefiles += [...] : ajouter les recopies specifiques à Windows
elif sys.platform == "linux2":
pass
# includefiles += [...] : ajouter les recopies specifiques à Linux
else:
pass
# includefiles += [...] : cas du Mac OSX non traite ici
# pour que les bibliotheques binaires de /usr/lib soient recopiees aussi sous Linux
binpathincludes = []
if sys.platform == "linux2":
binpathincludes += ["/usr/lib"]
# niveau d'optimisation pour la compilation en bytecodes
optimize = 0
# si True, n'affiche que les warning et les erreurs pendant le traitement cx_freeze
silent = True
# construction du dictionnaire des options
options = {
"includes": includes,
"excludes": excludes,
"packages": packages,
"include_files": includefiles
}
# pour inclure sous Windows les dll system de Windows necessaires
if sys.platform == "win32":
options["include_msvcr"] = True
#############################################################################
# preparation des cibles
base = None
if sys.platform == "win32":
base = "Win32GUI" # pour application graphique sous Windows
# base = "Console" # pour application en console sous Windows
icone = None
if sys.platform == "win32":
icone = "icone_ip.ico"
cible_1 = Executable(
Executable('BouclePrincipale.py', base="Win32GUI",icon=icone)
)
#############################################################################
# creation du setup
setup(
name="ALCOIp",
version="1.00",
description="Permet la saisi des IP",
author="Dr MARCUCCI Charles",
options={"build_exe": options},
executables=[cible_1]
)
而且我有这个错误信息: p = os.fspath(p) 类型错误:预期的 str、字节或 os.PathLike 对象不可执行
我认为 py 的魅力和 PyCharm 的工作原理是 link。我试着替换
includes = ['atexit','reportlab','Communicationbdd']
来自
includes = ['atexit','venv/Lib/site-packages/reportlab','Communicationbdd']
但是当我冻结应用程序时无法 运行 我遇到错误 ModuleNotFoundError:没有名为 'reportlab'
的模块III°)问题
如何处理这个错误?需要更换集成开发环境吗?
感谢您以后的回答
我找到了答案....当我添加一个包时,它只在 PyCharm 上...我使用 pip 安装在 python 而不是只在 PyCharm 上。 我再次午餐我的构建,它就像一个魅力