Ошибка поиска после упаковки скрипта python с py2exe - PullRequest
1 голос
/ 14 сентября 2010

Я написал скрипт на python, который привязывается к сокету следующим образом:

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

Я упаковываю этот скрипт с py2exe, используя setup.py со следующими параметрами:

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 голосов
/ 14 сентября 2010

Поскольку вы передаете строку юникода в качестве имени хоста, python2.6 предполагает наличие «IDNA» (интернационализированных доменных имен в приложениях).

Просто используйте

addr = ('', 11111)

вместо, если у вас нет веских причин требовать поддержки IDNA.

...