使用py2exe打包Python脚本后出现查找错误
我写了一个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。