【问题标题】:Pyinstaller - ImportError: Module 'pythoncom' isn't in frozen sys.pathPyinstaller - ImportError: Module \'pythoncom\' is\'t in freeze sys.path
【发布时间】:2022-08-18 10:39:57
【问题描述】:

在尝试运行由 pyinstaller 构建的 exe 后,我收到了该消息:

Traceback (most recent call last):
  File \"Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_win32comgenpy.py\", line 40, in <module>
  File \"PyInstaller\\loader\\pyimod03_importers.py\", line 476, in exec_module
  File \"win32com\\__init__.py\", line 6, in <module>
  File \"PyInstaller\\loader\\pyimod03_importers.py\", line 476, in exec_module
  File \"pythoncom.py\", line 4, in <module>
  File \"pywintypes.py\", line 44, in __import_pywin32_system_module__
ImportError: Module \'pythoncom\' isn\'t in frozen sys.path [\'C:\\\\Users\\\\KONRAD~1.DZI\\\\AppData\\\\Local\\\\Temp\\\\_MEI23842\\\\base_library.zip\', \'C:\\\\Users\\\\KONRAD~1.DZI\\\\AppData\\\\Local\\\\Temp\\\\_MEI23842\\\\lib-dynload\', \'C:\\\\Users\\\\KONRAD~1.DZI\\\\AppData\\\\Local\\\\Temp\\\\_MEI23842\']
[11136] Failed to execute script \'pyi_rth_win32comgenpy\' due to unhandled exception!

我尝试使用 win32com 模块的隐藏导入构建 exe 文件,而没有,这无论如何都行不通。我也重新安装了win32com,但这也没有帮助。

pyinstaller --onefile --hidden-import win32com main.py

删除import win32com.client 并删除此部分后:

if mail.lower() == \'tak\':
   outlook = win32.Dispatch(\'outlook.application\')
   mail = outlook.CreateItem(0)

   mail.To = dane[\'email\']

   mail.Subject = dane[\'temat\']

   if dane[\'zawartość\'].lower() == \'brak\':
      mail.Body = \'\'

   else:
      mail.Body = dane[\'zawartość\']
   email_cc = \"\"
   cc_list = dane[\'cc\']
   if cc_list[0].lower() == \"brak\":
      pass
   else:
      for email in dane[\'cc\']:
         email_cc = email_cc + email + \';\'

   for file in os.listdir(rozdzielone_pliki + \'\\\\\'):
      file_location = rozdzielone_pliki + \'\\\\\' + file
      mail.Attachments.Add(file_location)

   mail.Send()#

一切正常。

我应该怎么办? 感谢帮助。

标签: python pyinstaller


【解决方案1】:

我有同样的问题,只需将 pythoncomxx.dll 路径附加到 pyinstaller *.spec 文件。像这样(当然,你可以在命令行中使用 --collect-binaries 参数):

主要规范

a = Analysis(['main.py'],
             pathex = [],
             binaries = [('your\\python\\path\\Library\\bin\\pythoncom*.dll','.')]
             ...
             )

然后,重新运行:

pyinstaller main.spec

这是工作。

这对我有用。

提供可能的解决方案并不能保证它会起作用。

【讨论】:

  • 这对我不起作用...
  • 可以确认这对我也不起作用。
猜你喜欢
  • 2021-09-12
  • 2017-11-04
  • 2013-01-31
  • 2015-04-30
  • 2013-07-27
  • 2020-03-21
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多