Setuptools nicht übergeben von Argumenten für entry_points
Ich bin mit setuptools für ein Python-Skript, das ich schrieb
Nach der Installation, ich weiß:
$ megazord -i input -d database -v xx-xx -w yy-yy
Wie ich würde, wenn ich lief es ./like_this
Jedoch bekomme ich:
Traceback (most recent call last):
File "/usr/local/bin/megazord", line 9, in <module>
load_entry_point('megazord==1.0.0', 'console_scripts', 'megazord')()
TypeError: main() takes exactly 1 argument (0 given)
Sieht aus wie setuptools nicht sendet, meine Argumente zu main (), um analysiert zu werden (von optparse)
Hier mein setuptools config für entry_points:
entry_points = {
'console_scripts': [
'megazord = megazord.megazord:main',
'megazord-benchmark = megazord.benchmark:main',
'megazord-hash = megazord.mzhash:main',
'megazord-mutate = megazord.mutator:main',
]
}
Irgendwelche Ideen?
- Ugh. Nevermind, ich Sprach zu früh.
- Ich hatte noch einen Rest argv in def main(). Für einige Grund es didn ' T geben mir eine Fehlermeldung, wenn ich das Skript ausgeführt hat, vor.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den setuptools console_scripts Eintrag zeigen will, dass eine Funktion keine Argumente.
Glücklich, optparse (Parser für Kommandozeilen-Optionen) muss nicht übergeben werden alle Argumente, die es Lesen werden in der sys.argv[1:] und verwenden Sie diese als Eingabe.
Nur zu geben, ein vollständiges Bild von dem, was
megazord.py
Aussehen würde, mit der @Jeffrey Harris Vorschlag, eine schöne Bibliothek für das Parsen von Eingaben.Und mit mit es wie in dem Beispiel oben würde man erhalten,
Und da sind Sie alle optionalen Argumente,