Kann ein Python-Paketname mit einer Nummer beginnen?

8

Ich weiß, dass die Benennung eines Python-Moduls, das mit einer Zahl beginnt, eine schlechte Idee ist, wie in diese andere Frage , aber ich frage mich, ob es legal ist, dies in einem Python-Paket, nicht Modul (aka Datei) zu tun.

Zum Beispiel. Ich möchte eine Django-Website mit einigen externen APIs integrieren, und ich wollte ein "Third-Party" -Paket erstellen, das eine Datei für jeden Anbieter enthält, und ich weiß nicht, ob das Aufrufen von 3rd_party ein Kopfzerbrechen wird oder ich den Namen nennen sollte es third_party stattdessen, um Probleme zu vermeiden.

Hinweis: Ich weiß nicht, ob es wichtig ist, aber ich benutze Python 2.7

    
Caumons 05.07.2013, 10:54
quelle

2 Antworten

15

Nein, kann es nicht. Python-Paket- und Modulnamen müssen gültige Bezeichner sein:

%Vor%

Bezeichner müssen mit einem Buchstaben oder einem Unterstrich beginnen.

Die import-Anweisung definiert die Grammatik für Module als:

%Vor%

Pakete sind eine spezielle Art von Modul (implementiert als ein Verzeichnis mit __init__.py -Datei) und sind nicht von diesen Regeln ausgenommen.

Technisch können Sie dies umgehen, indem Sie die import -Anweisung nicht verwenden, da die importlib -Modul- und __import__ -Kette die Einschränkung nicht erzwingen. Es ist jedoch keine gute Idee, Ihr Paket oder Modul so zu benennen, dass Sie nicht standardmäßige Importmechanismen verwenden müssen, damit es funktioniert.

    
Martijn Pieters 05.07.2013, 10:55
quelle
4

Ja.

%Vor%

Importieren Sie es aus einer anderen Datei

%Vor%     
neuront 05.07.2013 11:01
quelle

Tags und Links