每次我运行 pyinstaller 可执行文件时,pyngrok 都会下载 ngrok。我怎样才能让它只下载一次ngrok?

Posted

技术标签:

【中文标题】每次我运行 pyinstaller 可执行文件时,pyngrok 都会下载 ngrok。我怎样才能让它只下载一次ngrok?【英文标题】:pyngrok downloads ngrok each time i run the pyinstaller executable. How can i make it download ngrok only once? 【发布时间】:2020-12-22 01:52:58 【问题描述】:

当我第一次运行脚本时,它会在 python38\Lib\site-packages\pyngrok\bin 文件夹中下载文件 ngrok.exe,并在第二次运行脚本时使用下载的 ngrok.exe,这是预期的。

但是当我制作一个可执行文件时,每次用户运行该可执行文件时它都会下载 ngrok。

那么我怎样才能告诉pyngrok只在可执行文件第一次执行时下载ngrok.exe,然后使用下载的文件而不是每次都下载呢?

这是我的代码 sn-p:

pyngrok_config = PyngrokConfig(region="au")
ngrok.set_auth_token(auth_code)   # auth_code is a string
tunnel = ngrok.connect(4444, "tcp", pyngrok_config=pyngrok_config)

【问题讨论】:

【参考方案1】:

正如您所观察到的,pyngrok 应该只下载一次ngrok 二进制文件。如果它一遍又一遍地下载它,它可能被下载到一个缓存位置,因此每次应用程序退出时都会被吹走。

这是如何发生的将很大程度上取决于您的可执行文件是如何构建的,因此我们需要更多信息来专门解决该问题。但是,更好的解决方案是简单地修改您的ngrok_path,以便明确设置二进制文件的下载位置,如here 所述。作为奖励,这还可以帮助您进行调试。

from pyngrok.conf import PyngrokConfig
from pyngrok import conf

conf.set_default(PyngrokConfig(region="au", ngrok_path="/usr/local/bin/ngrok"))

【讨论】:

以上是关于每次我运行 pyinstaller 可执行文件时,pyngrok 都会下载 ngrok。我怎样才能让它只下载一次ngrok?的主要内容,如果未能解决你的问题,请参考以下文章

运行使用pyinstaller制作的exe文件时出错

Pyinstaller 缺少 dll 文件

Pyinstaller - 通过 .bat 文件隐藏和运行可执行文件

构建 pyinstaller 可执行文件时,我可以控制架构(32 位与 64 位)吗?

在 Ubuntu 中使用 PyInstaller 时遇到问题

Pyinstaller 可执行文件不起作用