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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
GabrielleChanel
User
Beiträge: 42
Registriert: Dienstag 13. April 2021, 11:54

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?
"Those who can imagine anything, can create the impossible." Alan Turing
Benutzeravatar
__blackjack__
User
Beiträge: 14030
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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?
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
GabrielleChanel
User
Beiträge: 42
Registriert: Dienstag 13. April 2021, 11:54

@__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.
"Those who can imagine anything, can create the impossible." Alan Turing
Benutzeravatar
__blackjack__
User
Beiträge: 14030
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
GabrielleChanel
User
Beiträge: 42
Registriert: Dienstag 13. April 2021, 11:54

@__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.
"Those who can imagine anything, can create the impossible." Alan Turing
Antworten