我编写了一个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'。有谁能够帮我?
答案 0 :(得分:0)
因为您将unicode字符串作为主机名传递,所以python2.6假定需要进行“IDNA”(应用程序中的国际化域名)。
只需使用
addr = ('', 11111)
,除非您有充分的理由要求IDNA支持。