首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PyInstaller实现Python中的exchangelib库失败

用PyInstaller实现Python中的exchangelib库失败
EN

Stack Overflow用户
提问于 2022-06-22 19:23:19
回答 1查看 27关注 0票数 0

我正在编写一个应用程序,该应用程序将连接到Exchange,并按计划向收件人发送电子邮件。此应用程序依赖于成功的导入exchanglib。

当我将程序作为.py文件执行时,我能够导入exchangelib并获得所需的所有组件。我可以从命令行和朱庇特笔记本成功地运行它,但是当我使用PyInstaller将它转换成可执行文件时,它就失败了。

以下是相关代码行:

代码语言:javascript
复制
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)运行这个文件时,我得到了我所期望的:

代码语言:javascript
复制
"SUCCESS: import exchangelib"
"SUCCESS: import DELEGATE, Account, Credentials, Configuration, Message, Mailbox, FileAttachment, HTMLBody"

当我以exe的形式运行它时,我会得到以下输出:

代码语言:javascript
复制
    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转换为可执行文件:

代码语言:javascript
复制
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库放入可执行文件中?

EN

回答 1

Stack Overflow用户

发布于 2022-06-23 07:41:12

错误消息意味着Python可以找到zoneinfo模块,但是zoneinfo.ZoneInfoNotFoundError不存在。因此,要么安装了一个非常旧的backports.zoneinfo版本(类为在0.1.0版中引入),要么从一些不是backports.zoneinfo包的东西中获取zoneinfo模块--例如,如果您的路径中有一个zoneinfo.py文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72721001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档