Python 当我使用 cx_Freeze 将应用程序转换为可执行文件时,3.7 应用程序似乎停止连接到互联网
Python 3.7 app seems to stop connecting to internet when I use cx_Freeze to turn the app into an executable
我正在尝试创建一个 python 应用程序,它将在 GitHub 上检查自身的更新版本。它检查的方式是在存储库中找到一个包含最新版本号的 txt 文件。当我使用 运行 将它与 PyCharm 结合时,我的代码工作得很好并且可以做我想要的,但是当我使用 cx_Freeze 和 运行 exe 时它有问题。
我开始使用在冻结之前工作正常的请求,然后我切换到具有相同结果的 urllib3。我尝试简单地 ping google,它在冻结后有效,所以我知道连接到互联网不是问题。
from urllib3 import PoolManager
version_url = "https://raw.githubusercontent.com/redscientific/CompanionApp/master/Version.txt"
def get_data():
mgr = PoolManager()
r = mgr.request("GET", version_url)
...then I parse the data etc.
在我冻结它之前我得到了我需要的结果但是在我冻结它之后它似乎在 r = mgr.request("GET", version_url)
有问题
我不知道它有什么错误,因为除了将行打印到文件之外,我不知道如何从 .exe 中恢复错误,但在 [=14= 之后它不会到达任何行] 所以报错后无法输出任何东西
我想我的问题是冻结后如何让它工作?
它吐出的错误如下:
urllib3.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.
显然 cx_Freeze 不会自动添加几个必需的 .dll
文件。 here.
描述了我在更多谷歌搜索中发现的修复方法
尝试从 cmd
提示符或终端 运行 您的 exe,然后您应该能够在终端 window 中看到错误消息。
如果您仍然喜欢从应用程序中将异常打印到文件,您可以使用 try
... except
块来捕获异常并使用 traceback.print_exc()
要打印异常,请参阅 How to print the full traceback without halting the program?
假设第 r = mgr.request("GET", version_url)
行导致异常,将其替换为:
import traceback
try:
r = mgr.request("GET", version_url)
except Exception:
with open('logfile.txt', 'w') as f:
traceback.print_exc(file=f)
我正在尝试创建一个 python 应用程序,它将在 GitHub 上检查自身的更新版本。它检查的方式是在存储库中找到一个包含最新版本号的 txt 文件。当我使用 运行 将它与 PyCharm 结合时,我的代码工作得很好并且可以做我想要的,但是当我使用 cx_Freeze 和 运行 exe 时它有问题。
我开始使用在冻结之前工作正常的请求,然后我切换到具有相同结果的 urllib3。我尝试简单地 ping google,它在冻结后有效,所以我知道连接到互联网不是问题。
from urllib3 import PoolManager
version_url = "https://raw.githubusercontent.com/redscientific/CompanionApp/master/Version.txt"
def get_data():
mgr = PoolManager()
r = mgr.request("GET", version_url)
...then I parse the data etc.
在我冻结它之前我得到了我需要的结果但是在我冻结它之后它似乎在 r = mgr.request("GET", version_url)
我不知道它有什么错误,因为除了将行打印到文件之外,我不知道如何从 .exe 中恢复错误,但在 [=14= 之后它不会到达任何行] 所以报错后无法输出任何东西
我想我的问题是冻结后如何让它工作?
它吐出的错误如下:
urllib3.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.
显然 cx_Freeze 不会自动添加几个必需的 .dll
文件。 here.
尝试从 cmd
提示符或终端 运行 您的 exe,然后您应该能够在终端 window 中看到错误消息。
如果您仍然喜欢从应用程序中将异常打印到文件,您可以使用 try
... except
块来捕获异常并使用 traceback.print_exc()
要打印异常,请参阅 How to print the full traceback without halting the program?
假设第 r = mgr.request("GET", version_url)
行导致异常,将其替换为:
import traceback
try:
r = mgr.request("GET", version_url)
except Exception:
with open('logfile.txt', 'w') as f:
traceback.print_exc(file=f)