问题描述
我正在创建一个简单的自动化应用程序来提取每周的 pdf 文件,以便使用 PyQt6 和 Camelot-py 为我的公司带来出色的表现。我希望将此可执行文件安装到其他计算机上,以便同事可以随时运行该程序。但是,当我想使用 cx_freeze 方法将 .py 脚本转换为 exe 时,出现错误。
File "setup.py",line 14,in <module>
setup(
File "C:\Users\User\AppData\Roaming\Python\python38\site-packages\cx_Freeze\dist.py",line
397,in setup
distutils.core.setup(**attrs)
File "C:\Program Files\python38\lib\distutils\core.py",line 148,in setup
dist.run_commands()
File "C:\Program Files\python38\lib\distutils\dist.py",line 966,in run_commands
self.run_command(cmd)
File "C:\Program Files\python38\lib\distutils\dist.py",line 985,in run_command
cmd_obj.run()
File "C:\Program Files\python38\lib\distutils\command\build.py",line 135,in run
self.run_command(cmd_name)
File "C:\Program Files\python38\lib\distutils\cmd.py",line 313,in run_command
self.distribution.run_command(command)
File "C:\Program Files\python38\lib\distutils\dist.py",in run_command
cmd_obj.run()
File "C:\Users\User\AppData\Roaming\Python\python38\site-packages\cx_Freeze\dist.py",line
265,in run
freezer.Freeze()
File "C:\Users\User\AppData\Roaming\Python\python38\site-packages\cx_Freeze\freezer.py",line
795,in Freeze
self.finder: ModuleFinder = self._GetModuleFinder()
File "C:\Users\User\AppData\Roaming\Python\python38\site-packages\cx_Freeze\freezer.py",line
479,in _GetModuleFinder
finder.IncludePackage(name)
File "C:\Users\User\AppData\Roaming\Python\python38\site-packages\cx_Freeze\finder.py",line
687,in IncludePackage
self._import_all_sub_modules(module,deferred_imports)
File "C:\Users\User\AppData\Roaming\Python\python38\site-packages\cx_Freeze\finder.py",line
220,in _import_all_sub_modules
self._import_all_sub_modules(
File "C:\Users\User\AppData\Roaming\Python\python38\site-packages\cx_Freeze\finder.py",line
214,in _import_all_sub_modules
raise ImportError(
ImportError: No module named 'camelot.admin.application_admin'
代码可以完美运行。任何帮助,将不胜感激。非常感谢。
解决方法
运行以下命令:
pip3 install camelot-py[all]
pip install camelot
pip install PyQt6
在您的代码中导入:
import camelot
import sqlalchemy
import PyQt6
检查版本:
print(camelot.__version__)
print(sqlalchemy.__version__)