Ich habe mit setuptools eine setup.py für ein Python-Paket geschrieben und wollte ein Nicht-ASCII-Zeichen in das long_description-Feld einfügen:
%Vor%Leider wird beim Übergeben eines Unicode-Objekts an setup () einer der beiden folgenden Befehle mit UnicodeEncodeError
abgebrochen %Vor%Wenn ich eine rohe UTF-8-Zeichenfolge für das long_description-Feld verwende, bricht der folgende Befehl mit einem UnicodeDecodeError:
%Vor%Ich gebe Software im Allgemeinen frei, indem ich 'python setup.py sdist register upload' ausführe, was bedeutet, dass hässliche Hacks, die in sys.argv schauen und den richtigen Objekttyp übergeben, direkt aus sind.
Am Ende gab ich auf und implementierte einen anderen hässlichen Hack:
%Vor%Gibt es keinen besseren Weg?
Ich teste mit dem obigen Code - es gibt keinen Fehler von --long-description, nur von rst2html; Upload scheint OK zu funktionieren (obwohl ich eigentlich den Upload abbringe) und registriere mich nach meinem Benutzernamen, den ich nicht habe. Aber die Rückverfolgung in Ihrem Kommentar ist hilfreich - es ist die automatische Konvertierung in unicode
im Befehl register
, die das Problem verursacht.
Siehe die illusive setdefaultencoding für weitere Informationen zu diesem Thema - im Grunde soll die Standardcodierung in Python möglich sein um Ihre codierte Zeichenkette zurück in Unicode zu konvertieren, aber es ist schwierig, dies einzurichten. In diesem Fall denke ich, es ist die Mühe wert:
%Vor% Oder sogar um richtig zu sein, können Sie es von locale
bekommen - es ist Code auskommentiert in /usr/lib/python2.6/site.py
, dass Sie das finden können, aber ich werde diese Diskussion für jetzt verlassen.
Tags und Links python unicode setuptools