使用py2exe打包python脚本后查找错误

时间:2010-09-14 12:20:18

标签: python sockets py2exe

我编写了一个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 :(得分:0)

因为您将unicode字符串作为主机名传递,所以python2.6假定需要进行“IDNA”(应用程序中的国际化域名)。

只需使用

addr = ('', 11111)

,除非您有充分的理由要求IDNA支持。