我正在编写一个应用程序,该应用程序将连接到Exchange,并按计划向收件人发送电子邮件。此应用程序依赖于成功的导入exchanglib。
当我将程序作为.py文件执行时,我能够导入exchangelib并获得所需的所有组件。我可以从命令行和朱庇特笔记本成功地运行它,但是当我使用PyInstaller将它转换成可执行文件时,它就失败了。
以下是相关代码行:
print("Attempting: import exchangelib")
try:
import exchangelib
print("SUCCESS: import exchangelib")
except Exception as expOutput:
print("FAILED: import exchangelib")
print(expOutput)
print("Attempting: from exchangelib import DELEGATE, Account, Credentials, Configuration, Message, Mailbox, FileAttachment, HTMLBody")
try:
from exchangelib import DELEGATE, Account, Credentials, Configuration, Message, Mailbox, FileAttachment, HTMLBody
print("SUCCESS: import DELEGATE, Account, Credentials, Configuration, Message, Mailbox, FileAttachment, HTMLBody")
except Exception as expNewOutput:
print(expNewOutput)当我从.py文件(Test_exchangelib.py)运行这个文件时,我得到了我所期望的:
"SUCCESS: import exchangelib"
"SUCCESS: import DELEGATE, Account, Credentials, Configuration, Message, Mailbox, FileAttachment, HTMLBody"当我以exe的形式运行它时,我会得到以下输出:
Attempting: import exchangelib
FAILED: import exchangelib
module 'zoneinfo' has no attribute 'ZoneInfoNotFoundError'
Attempting: from exchangelib import DELEGATE, Account, Credentials, Configuration, Message, Mailbox, FileAttachment, HTMLBody
module 'zoneinfo' has no attribute 'ZoneInfoNotFoundError'下面是我的PyInstaller命令,用于将Test_exchangelib.py转换为可执行文件:
C:\>cd C:\Users\aguler\AppData\Roaming\Python\Python37
C:\Users\aguler\AppData\Roaming\Python\Python37>ProjectEnvironment\Scripts\activate.bat
(ProjectEnvironment) C:\Users\aguler\AppData\Roaming\Python\Python37>Scripts\pyinstaller --onefile C:\PyFiles\Email_Troubleshoot\Test_exchangelib.py --paths=C:\Users\aguler\AppData\Roaming\Python\Python37\site-packages\tzdata --paths=C:\Users\aguler\AppData\Roaming\Python\Python37\site-packages\tzdata\zoneinfo --paths=C:\users\aguler\appdata\roaming\python\python37\projectenvironment\lib\site-packages\exchangelib --paths=C:\Users\aguler\AppData\Roaming\Python\Python37\ProjectEnvironment\Lib\site-packages\backports在通过调用exchangelib实现的account.py文件中,从backport调用zoneinfo类。这意味着可执行文件没有正确地引入后端,因为它忽略了zoneInfo。
我遗漏了什么?如何将整个backports库放入可执行文件中?
发布于 2022-06-23 07:41:12
错误消息意味着Python可以找到zoneinfo模块,但是zoneinfo.ZoneInfoNotFoundError不存在。因此,要么安装了一个非常旧的backports.zoneinfo版本(类为在0.1.0版中引入),要么从一些不是backports.zoneinfo包的东西中获取zoneinfo模块--例如,如果您的路径中有一个zoneinfo.py文件。
https://stackoverflow.com/questions/72721001
复制相似问题