2015-05-13 2 views
12

Leute, Nach dem Erstellen und Bereitstellen eines Pakets myShtuff zu einem lokalen Pypicloud-Server, kann ich es in einem separaten virtuellen env installieren.Ausführen eines Python-Pakets nach dem Kompilieren und Hochladen zu pypicloud Server

Alles scheint, mit Ausnahme der Pfad der ausführbaren Datei zu arbeiten ...

(venv)[[email protected] ~]$ pip freeze 
Fabric==1.10.1 
boto==2.38.0 
myShtuff==0.1 
ecdsa==0.13 
paramiko==1.15.2 
pycrypto==2.6.1 
wsgiref==0.1.2 

Wenn ich das Skript direkt versuchen laufen, erhalte ich:

(venv)[[email protected] ~]$ myShtuff 
-bash: myShtuff: command not found 

Allerdings habe ich es laufen kann über:

(venv)[[email protected] ~]$ python /home/ec2-user/venv/lib/python2.7/site-packages/myShtuff/myShtuff.py 
..works 

Mache ich einen Fehler beim Bau des Pakets? Irgendwo in setup.cfg oder setup.py?

Danke !!!

+0

Wie ist setup.py? – skyline75489

+0

Haben Sie versucht, 'myShtuff.py' auszuführen? – kichik

Antwort

9

Sie benötigen in Ihrem Paket einen __main__.py und einen in setup.py definierten Einstiegspunkt.

Siehe here und here aber kurz gesagt, Ihre __main__.py läuft, was auch immer Ihre Hauptfunktion ist, wenn Ihr Modul mit python -m läuft und Setuptools können, was beliebige Funktionen, die Sie als Skripte ausführen möchten machen. Sie können beides oder beides tun. Ihre __main__.py wie folgt aussieht:

from .stuff import my_main_func 

if __name__ == "__main__": 
    my_main_func() 

und in setup.py:

entry_points={ 
    'console_scripts': [ 
     'myShtuffscript = myShtuff.stuff:my_main_func' 
    ] 

Hier ist myShtuffscript was auch immer Sie die ausführbare wollen aufgerufen werden, myShtuff der Name des Pakets, stuff der Name der Datei im Paket (myShtuff/stuff.py) und my_main_func der Name einer Funktion in dieser Datei.

4

Sie benötigen entry_point in Ihrem setup.py, um zu definieren, um direkt etwas von der Kommandozeile ausführen:

entry_points={ 
    'console_scripts': [ 
     'cursive = cursive.tools.cmd:cursive_command', 
    ], 
}, 

Weitere Details here gefunden werden können.

Verwandte Themen