我正在尝试创建一个聊天机器人并使用 Pyinstaller 将其转换为可执行文件。这是我的代码:
from chatterbot.trainers import ChatterBotCorpusTrainer
import tkinter as tk
import os.path
import webbrowser
import tkinter.ttk as ttk
import tkinter.scrolledtext as ScrolledText
import time
def helping_button():
webbrowser.open("https://www.internetking.ga/2020/06/sociality-gets-update-sociality-30.html")
class TkinterGUIExample(tk.Tk):
def __init__(self, *args, **kwargs):
"""
Create & set window variables.
"""
tk.Tk.__init__(self, *args, **kwargs)
if os.path.isfile("database.sqlite3"):
self.chatbot = ChatBot(
"Cyto Bot",
storage_adapter="chatterbot.storage.SQLStorageAdapter",
logic_adapters=[
{
'import_path': 'chatterbot.pyinstallerlogic.BestMatch'
},
{
'import_path': 'chatterbot.logic.MathematicalEvaluation'
}
],
database_uri="sqlite:///database.sqlite3"
)
else:
self.chatbot = ChatBot(
"Cyto Bot",
storage_adapter="chatterbot.storage.SQLStorageAdapter",
logic_adapters=[
{
'import_path': 'chatterbot.logic.BestMatch'
},
{
'import_path': 'chatterbot.logic.MathematicalEvaluation'
}
],
database_uri="sqlite:///database.sqlite3"
)
trainer = ChatterBotCorpusTrainer(self.chatbot)
trainer.train('chatterbot.corpus.english')
self.title("Sociality 3.0 - CytoBot")
self.wm_iconbitmap('favicon.ico')
self.resizable(0, 0)
self.initialize()
def initialize(self):
"""
Set window layout.
"""
self.grid()
self.style = ttk.Style()
self.style.configure("Blue.TLabel", foreground="deepskyblue")
self.style.configure("Red.TButton", font=("arial", 15, "bold"), foreground="red")
self.style.configure("Green.TButton", font=("arial", 10, "bold"), foreground="green")
self.style.configure("Top.TLabel", font=("arial", 20, "bold"), foreground="steelblue")
self.toptitle = ttk.Label(self, anchor=tk.E, text="Sociality", style="Top.TLabel")
self.toptitle.grid(column=0, row=0, sticky='nesw', padx=3, pady=3)
self.respond = ttk.Button(self, text='Get Response', command=self.get_response, style="Red.TButton")
self.respond.grid(column=1, row=1, sticky='nesw', padx=3, pady=3)
self.usr_input = ttk.Entry(self, state='normal')
self.usr_input.grid(column=0, row=1, sticky='nesw', padx=3, pady=3)
self.conversation = ScrolledText.ScrolledText(self, state='disabled')
self.conversation.grid(column=0, row=2, columnspan=2, sticky='nesw', padx=3, pady=3)
self.credits = ttk.Label(self, text="Created by Benjamin Demetz", style="Blue.TLabel")
self.credits.grid(column=0, row=3, sticky='nesw', padx=3, pady=3)
self.help_button = ttk.Button(self, text='Click here for help', command=helping_button, style="Green.TButton")
self.help_button.grid(column=1, row=3, sticky='nesw', padx=3, pady=3)
def get_response(self):
"""
Get a response from the chatbot and display it.
"""
user_input = self.usr_input.get()
self.usr_input.delete(0, tk.END)
response = self.chatbot.get_response(user_input)
self.conversation['state'] = 'normal'
self.conversation.insert(
tk.END, "Human: " + user_input + "\n" + "CytoBot: " + str(response.text) + "\n"
)
self.conversation['state'] = 'disabled'
time.sleep(0.5)
gui_example = TkinterGUIExample()
gui_example.mainloop()
我正在使用 Python 3.6.5 和 Pycharm。我在 python 解释器中安装了以下内容:Chatterbot、chatterbot-corpus、spacy 和 pyinstaller。
我使用它的终端在 pycharm 内部使用了这个命令:
pyinstaller -y -F -w -i "D:\Coding\PyProjects\Sociality\Sociality3\favicon.ico" "D:\Coding\PyProjects\Sociality\Sociality3\cyto.py"
这是我得到的输出:
78 INFO: PyInstaller: 4.1.dev0+dc9680d526
78 INFO: Python: 3.6.5
78 INFO: Platform: Windows-10-10.0.19041-SP0
79 INFO: wrote D:\Coding\PyProjects\Sociality\Sociality3\cyto.spec
82 INFO: UPX is not available.
84 INFO: Extending PYTHONPATH with paths
['D:\\Coding\\PyProjects\\Sociality\\Sociality3',
'D:\\Coding\\PyProjects\\Sociality\\Sociality3']
182 INFO: checking Analysis
183 INFO: Building Analysis because Analysis-00.toc is non existent
183 INFO: Initializing module dependency graph...
186 INFO: Caching module graph hooks...
207 INFO: Analyzing base_library.zip ...
3938 INFO: Caching module dependency graph...
4043 INFO: running Analysis Analysis-00.toc
4058 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
required by C:\Users\benbe\AppData\Local\Programs\Python\Python36\python.exe
4112 INFO: Analyzing D:\Coding\PyProjects\Sociality\Sociality3\cyto.py
4938 INFO: Processing pre-find module path hook distutils from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+d
c9680d526-py3.6.egg\\PyInstaller\\hooks\\pre_find_module_path\\hook-distutils.py'.
4940 INFO: distutils: retargeting to non-venv dir 'C:\\Users\\benbe\\AppData\\Local\\Programs\\Python\\Python36\\lib'
6276 INFO: Processing pre-safe import module hook setuptools.extern.six.moves from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\py
installer-4.1.dev0+dc9680d526-py3.6.egg\\PyInstaller\\hooks\\pre_safe_import_module\\hook-setuptools.extern.six.moves.py'.
6718 INFO: Processing pre-find module path hook site from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680
d526-py3.6.egg\\PyInstaller\\hooks\\pre_find_module_path\\hook-site.py'.
6719 INFO: site: retargeting to fake-dir 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d526-py3.6.egg\\P
yInstaller\\fake-modules'
11351 INFO: Processing pre-safe import module hook urllib3.packages.six.moves from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\py
installer-4.1.dev0+dc9680d526-py3.6.egg\\PyInstaller\\hooks\\pre_safe_import_module\\hook-urllib3.packages.six.moves.py'.
13485 INFO: Processing pre-safe import module hook six.moves from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev
0+dc9680d526-py3.6.egg\\PyInstaller\\hooks\\pre_safe_import_module\\hook-six.moves.py'.
15880 INFO: Processing pre-safe import module hook win32com from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\_pyinstaller_hooks_c
ontrib\\hooks\\pre_safe_import_module\\hook-win32com.py'.
18031 INFO: Processing module hooks...
18031 INFO: Loading module hook 'hook-certifi.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\_pyinstaller_hooks_contrib\\ho
oks\\stdhooks'...
18038 INFO: Loading module hook 'hook-pythoncom.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\_pyinstaller_hooks_contrib\\
hooks\\stdhooks'...
18328 INFO: Loading module hook 'hook-pywintypes.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\_pyinstaller_hooks_contrib\
\hooks\\stdhooks'...
18601 INFO: Loading module hook 'hook-win32com.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\_pyinstaller_hooks_contrib\\h
ooks\\stdhooks'...
18697 INFO: Loading module hook 'hook-distutils.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d
526-py3.6.egg\\PyInstaller\\hooks'...
18699 INFO: Loading module hook 'hook-encodings.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d
526-py3.6.egg\\PyInstaller\\hooks'...
18765 INFO: Loading module hook 'hook-importlib_metadata.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev
0+dc9680d526-py3.6.egg\\PyInstaller\\hooks'...
18768 INFO: Loading module hook 'hook-lib2to3.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d52
6-py3.6.egg\\PyInstaller\\hooks'...
18803 INFO: Loading module hook 'hook-numpy.core.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680
d526-py3.6.egg\\PyInstaller\\hooks'...
19214 INFO: Loading module hook 'hook-numpy.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d526-
py3.6.egg\\PyInstaller\\hooks'...
19216 INFO: Loading module hook 'hook-pkg_resources.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9
680d526-py3.6.egg\\PyInstaller\\hooks'...
19739 WARNING: Hidden import "pkg_resources.py2_warn" not found!
19739 WARNING: Hidden import "pkg_resources.markers" not found!
19741 INFO: Excluding import '__main__'
19742 INFO: Removing import of __main__ from module pkg_resources
19742 INFO: Loading module hook 'hook-pytz.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d526-p
y3.6.egg\\PyInstaller\\hooks'...
19892 INFO: Loading module hook 'hook-setuptools.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680
d526-py3.6.egg\\PyInstaller\\hooks'...
20380 INFO: Loading module hook 'hook-sqlalchemy.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680
d526-py3.6.egg\\PyInstaller\\hooks'...
20610 INFO: Found 4 sqlalchemy hidden imports
20611 WARNING: Hidden import "MySQLdb" not found!
20624 WARNING: Hidden import "sqlalchemy.sql.functions.func" not found!
20626 INFO: Excluding import 'sqlalchemy.testing'
20628 INFO: Removing import of sqlalchemy.testing.util from module sqlalchemy.orm.util
20628 INFO: Removing import of sqlalchemy.testing.config from module sqlalchemy.testing
20628 INFO: Removing import of sqlalchemy.testing.exclusions from module sqlalchemy.testing
20629 INFO: Removing import of sqlalchemy.testing.mock from module sqlalchemy.testing
20629 INFO: Removing import of sqlalchemy.testing.util from module sqlalchemy.testing
20629 INFO: Removing import of sqlalchemy.testing.warnings from module sqlalchemy.testing
20629 INFO: Removing import of sqlalchemy.testing.engines from module sqlalchemy.testing
20629 INFO: Removing import of sqlalchemy.testing.assertsql from module sqlalchemy.testing
20630 INFO: Removing import of sqlalchemy.testing.assertions from module sqlalchemy.testing
20630 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing
20630 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing.config
20630 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing.mock
20630 INFO: Removing import of sqlalchemy.testing.config from module sqlalchemy.testing.assertions
20630 INFO: Removing import of sqlalchemy.testing.exclusions from module sqlalchemy.testing.assertions
20631 INFO: Removing import of sqlalchemy.testing.mock from module sqlalchemy.testing.assertions
20631 INFO: Removing import of sqlalchemy.testing.util from module sqlalchemy.testing.assertions
20631 INFO: Removing import of sqlalchemy.testing.assertsql from module sqlalchemy.testing.assertions
20631 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing.assertions
20631 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing.assertsql
20631 INFO: Removing import of sqlalchemy.testing.engines from module sqlalchemy.testing.util
20631 INFO: Removing import of sqlalchemy.testing.config from module sqlalchemy.testing.util
20631 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing.util
20631 INFO: Removing import of sqlalchemy.testing.assertions from module sqlalchemy.testing.engines
20632 INFO: Removing import of sqlalchemy.testing.config from module sqlalchemy.testing.engines
20632 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing.engines
20632 INFO: Removing import of sqlalchemy.testing.util from module sqlalchemy.testing.engines
20633 INFO: Removing import of sqlalchemy.testing.config from module sqlalchemy.testing.exclusions
20633 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing.exclusions
20633 INFO: Removing import of sqlalchemy.testing.assertions from module sqlalchemy.testing.warnings
20633 INFO: Removing import of sqlalchemy.testing from module sqlalchemy.testing.warnings
20633 INFO: Loading module hook 'hook-sqlite3.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d52
6-py3.6.egg\\PyInstaller\\hooks'...
20709 INFO: Loading module hook 'hook-sysconfig.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d
526-py3.6.egg\\PyInstaller\\hooks'...
20711 INFO: Loading module hook 'hook-xml.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d526-py
3.6.egg\\PyInstaller\\hooks'...
20796 INFO: Loading module hook 'hook-_tkinter.py' from 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d5
26-py3.6.egg\\PyInstaller\\hooks'...
20924 INFO: checking Tree
20924 INFO: Building Tree because Tree-00.toc is non existent
20924 INFO: Building Tree Tree-00.toc
20971 INFO: checking Tree
20971 INFO: Building Tree because Tree-01.toc is non existent
20971 INFO: Building Tree Tree-01.toc
21042 INFO: checking Tree
21042 INFO: Building Tree because Tree-02.toc is non existent
21042 INFO: Building Tree Tree-02.toc
21053 INFO: Looking for ctypes DLLs
21081 INFO: Analyzing run-time hooks ...
21087 INFO: Including run-time hook 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d526-py3.6.egg\\PyInst
aller\\hooks\\rthooks\\pyi_rth__tkinter.py'
21094 INFO: Including run-time hook 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_r
th_certifi.py'
21099 INFO: Including run-time hook 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d526-py3.6.egg\\PyInst
aller\\hooks\\rthooks\\pyi_rth_pkgres.py'
21105 INFO: Including run-time hook 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d526-py3.6.egg\\PyInst
aller\\hooks\\rthooks\\pyi_rth_win32comgenpy.py'
21111 INFO: Including run-time hook 'c:\\users\\benbe\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\pyinstaller-4.1.dev0+dc9680d526-py3.6.egg\\PyInst
aller\\hooks\\rthooks\\pyi_rth_multiprocessing.py'
21130 INFO: Looking for dynamic libraries
22213 INFO: Looking for eggs
22214 INFO: Using Python library C:\Users\benbe\AppData\Local\Programs\Python\Python36\python36.dll
22214 INFO: Found binding redirects:
[]
22222 INFO: Warnings written to D:\Coding\PyProjects\Sociality\Sociality3\build\cyto\warn-cyto.txt
22357 INFO: Graph cross-reference written to D:\Coding\PyProjects\Sociality\Sociality3\build\cyto\xref-cyto.html
22426 INFO: checking PYZ
22426 INFO: Building PYZ because PYZ-00.toc is non existent
22426 INFO: Building PYZ (ZlibArchive) D:\Coding\PyProjects\Sociality\Sociality3\build\cyto\PYZ-00.pyz
24285 INFO: Building PYZ (ZlibArchive) D:\Coding\PyProjects\Sociality\Sociality3\build\cyto\PYZ-00.pyz completed successfully.
24314 INFO: checking PKG
24314 INFO: Building PKG because PKG-00.toc is non existent
24314 INFO: Building PKG (CArchive) PKG-00.pkg
40312 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
40363 INFO: Bootloader c:\users\benbe\appdata\local\programs\python\python36\lib\site-packages\pyinstaller-4.1.dev0+dc9680d526-py3.6.egg\PyInstaller\bootloader\Windows-
64bit\runw.exe
40363 INFO: checking EXE
40364 INFO: Building EXE because EXE-00.toc is non existent
40364 INFO: Building EXE from EXE-00.toc
40442 INFO: Copying icons from ['D:\\Coding\\PyProjects\\Sociality\\Sociality3\\favicon.ico']
40445 INFO: Writing RT_GROUP_ICON 0 resource with 20 bytes
40445 INFO: Writing RT_ICON 1 resource with 1128 bytes
40448 INFO: Updating manifest in D:\Coding\PyProjects\Sociality\Sociality3\build\cyto\runw.exe.q3_2x_ev
40448 INFO: Updating resource type 24 name 1 language 0
40449 INFO: Appending archive to EXE D:\Coding\PyProjects\Sociality\Sociality3\dist\cyto.exe
40474 INFO: Building EXE from EXE-00.toc completed successfully.
之后,我尝试在 Pycharm 中再次执行该脚本,但奇怪的是我收到了一条错误消息:
Traceback (most recent call last):
File "D:/Coding/PyProjects/Sociality/Sociality3/cyto.py", line 109, in <module>
gui_example = TkinterGUIExample()
File "D:/Coding/PyProjects/Sociality/Sociality3/cyto.py", line 35, in __init__
database_uri="sqlite:///database.sqlite3"
File "D:\Coding\PyProjects\Sociality\Sociality3\venv\lib\site-packages\chatterbot\chatterbot.py", line 37, in __init__
utils.validate_adapter_class(adapter, LogicAdapter)
File "D:\Coding\PyProjects\Sociality\Sociality3\venv\lib\site-packages\chatterbot\utils.py", line 64, in validate_adapter_class
if not issubclass(import_module(validate_class), adapter_class):
File "D:\Coding\PyProjects\Sociality\Sociality3\venv\lib\site-packages\chatterbot\utils.py", line 15, in import_module
module = importlib.import_module(module_path)
File "C:\Users\benbe\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'chatterbot.pyinstallerlogic'
Process finished with exit code 1
而且当我尝试执行可执行文件时,我得到了错误:
无法执行脚本细胞
这是 warn-cyto.txt 文件:https ://paste.pythondiscord.com/dekexunera.coffeescript
这是 pyinstaller -y -F -c -i "D:\Coding\PyProjects\Sociality\Sociality3\favicon.ico" "D:\Coding\PyProjects\Sociality\Sociality3\cyto.py" 的输出