我正在运行一个简单的脚本,该脚本使用 ipfsapi 从 IPFS 节点下载和上传文件。一切正常。
但是当使用 Pyinstaller 运行时(我使用
--onefile
选项,但默认设置也会发生同样的情况),我收到以下错误:
Traceback (most recent call last):
File "multiaddr/transforms.py", line 66, in string_iter
File "multiaddr/codecs/__init__.py", line 23, in codec_by_name
...
File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'multiaddr.codecs.idna'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "apt.py", line 9, in <module>
import ipfsapi
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
multiaddr.exceptions.StringParseError: Invalid MultiAddr '/dns/localhost/tcp/5001/http' protocol dns: Unknown Protocol
[PYI-29889:ERROR] Failed to execute script 'apt' due to unhandled exception!
但我总是得到完全相同的错误。仅当使用 Pyinstaller 运行时才会失败。如果我使用 Python 运行我的脚本,它就会起作用。
我发现奇怪的是,我在脚本的一开始就打印一条消息,而 Pyinstaller 没有打印,似乎在我的脚本执行之前就出现了失败。就好像它在运行脚本之前加载模块,并且作为加载的一部分尝试连接到
/dns/localhost/tcp/5001/http
,但这总是会失败,我没有在本地主机上运行节点。
有什么想法吗?
谢谢
ModuleNotFound
错误意味着您没有正在使用的库。您是否尝试过其他部署工具,例如 cx_Freeze?