Seite 1 von 1

selbstkreiiertes Package installieren (Test vor dem evtl. Veröffentlichen)

Verfasst: Donnerstag 27. Mai 2021, 15:15
von GabrielleChanel
Hallo

Ich habe ein selbstkreiiertes Package und möchte den Vorgang des Installierens via Command-line überprüfen (auf Windows). Ich habe es heruntergeladen und folgenden Befehl ausgeführt (hat für eine vorherige Version des selben Package auch funktioniert, aber nicht für diese Version 1.2.0):

Code: Alles auswählen

 $ pip install -e . 
welche folgende Fehlermeldung ausgibt:

Code: Alles auswählen

ERROR: Command errored out with exit status 1:
     command: 'c:\users\my_pc\appdata\local\programs\python\python38\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\my_pc\\Documents\\my_package_folder\\setup.py'"'"'; __file__='"'"'C:\\Users\\my_pc\\Documents\\my_package_folder\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\my_pc\AppData\Local\Temp\pip-pip-egg-info-ue15nt4v'
         cwd: C:\Users\my_pc\Documents\my_package_folder\
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\my_pc\Documents\my_package_folder\setup.py", line 12, in <module>
        long_description = readme.read()
      File "c:\users\my_pc\appdata\local\programs\python\python38\lib\encodings\cp1252.py", line 23, in decode
        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
    UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 5788: character maps to <undefined>
    ----------------------------------------
WARNING: Discarding file:///C:/Users/my_pc/Documents/my_package_folder. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Die Ordnerstruktur sieht folgendermassen aus:
"my_package_folder" enthält den Ordner "aa", "tests" und die Datei "setup.py" und noch ein paar andere (".gitignore" usw.)
Das eigentliche Package ist "aa", aber auch mit $ pip install aa funktioniert es nicht. Es handelt sich um die Package Version 1.2.0. Im Ordner "aa" ist eine "__init__.py" Datei enthalten, sowie mehrere "programme.py".

Weiss jemand wo der Fehler liegt?

Re: selbstkreiiertes Package installieren (Test vor dem evtl. Veröffentlichen)

Verfasst: Donnerstag 27. Mai 2021, 15:24
von __blackjack__
@GabrielleChanel: Offenbar ist da was in der Datei zum Dateiobjekt `readme` in der `setup.py` das nicht als cp1252 dekodiert werden kann. Ist die entsprechende Datei denn so kodiert? Gibst Du beim öffnen der Datei die richtige Kodierung an?

Re: selbstkreiiertes Package installieren (Test vor dem evtl. Veröffentlichen)

Verfasst: Donnerstag 27. Mai 2021, 15:34
von GabrielleChanel
@__blackjack__
Ich habe nachgeprüft, alle Dateien sind in utf-8 geschrieben, deswegen verstehe ich den UnicodeDecodeError nicht.
Auch pip install . oder pip install aa funktionieren nebst pip install -e . nicht.

Re: selbstkreiiertes Package installieren (Test vor dem evtl. Veröffentlichen)

Verfasst: Donnerstag 27. Mai 2021, 15:57
von __blackjack__
@GabrielleChanel: Wird die Datei denn auch explizit als UTF-8 kodiert geöffnet? Beim öffnen von Textdateien sollte man immer explizit die Kodierung angeben. Sonst passieren so Sachen wie hier, dass es auf manchen Systemen funktioniert, und auf anderen nicht.

Re: selbstkreiiertes Package installieren (Test vor dem evtl. Veröffentlichen)

Verfasst: Donnerstag 27. Mai 2021, 16:08
von GabrielleChanel
@__blackjack__
Danke vielmals, ich habe nun den Fehler endlich gefunden :) Es hat nun geklappt.
Alle Dateien stehen zwar in utf-8, doch nicht explizit der darin enthaltene Code, d.h.: in einer Datei stand kein: encoding = "utf-8" im open() Statement (hatte es vergessen). Und bei Windows ist anders als bei Mac "utf-8" nicht immer default, habe ich soeben herausgefunden.