Was ist der richtige Weg, Unicode-Metadaten in setup.py zu verwenden?

8

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?

    
Marius Gedminas 21.07.2009, 23:43
quelle

3 Antworten

5

Es ist offensichtlich ein Fehler, der in python 2.6 behoben wurde: Ссылка

Tarek schlägt vor, post_to_server zu patchen. Der Patch sollte alle Werte in der Vorverarbeitung verarbeiten "data" -Argument und wandle sie in Unicode und rufe dann die ursprüngliche Methode auf. Siehe Ссылка

    
Reinout van Rees 17.09.2009, 13:51
quelle
3
%Vor%

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.

    
David Fraser 24.07.2009 15:29
quelle
1

Sie müssen Ihre Unicode-Langbeschreibung u"bläh bläh bläh" in eine normale Zeichenkette "bläh bläh bläh" ändern und einen Kodierungsheader als zweite Zeile Ihrer Datei hinzufügen:

%Vor%

Natürlich müssen Sie die Datei auch mit UTF-8-Codierung speichern.

    
wbg 25.07.2009 15:02
quelle

Tags und Links