使用py2exe打包Python脚本后出现查找错误

1 投票
1 回答
716 浏览
提问于 2025-04-16 04:08

我写了一个Python脚本,它绑定了一个套接字,代码如下:

from socket import *
addr = (unicode(), 11111)
mySocket = socket(AF_INET, SOCK_STREAM)
mySocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
mySocket.bind(addr)

我使用setup.py和以下选项通过py2exe打包这个脚本:

setup(
    console=["myProgram.py"],
    options = {"py2exe": {"compressed": 1,
                      "optimize": 2,
                      "bundle_files": 1,
                      "excludes": ["w9xpopen.exe"],
                      "packages": ["encodings","codecs"],
                          }},
    zipfile = None)

在Python 2.5下,这个打包运行得很好。但是,当我在Python 2.6下打包源代码时,我遇到了以下错误:

   Traceback (most recent call last):
   File "Mod_CommsServ.pyo", line 201, in __init
    File "<string>", line 1, in bind
    LookupError: unknown encoding: idna

如你所见,我已经为py2exe包含了编码设置,但生成的可执行文件还是无法找到'idna'。有没有人能帮我解决这个问题?

1 个回答

0

因为你传递了一个unicode字符串作为主机名,所以Python 2.6会认为需要进行“国际化域名”(IDNA)的处理。

你可以直接使用

addr = ('', 11111)

,除非你有很好的理由需要支持IDNA。

撰写回答