2015-05-13 10 views
12

Folks, Dopo la costruzione e la distribuzione di un pacchetto chiamato myShtuff a un server pypicloud locali, sono in grado di installarlo in un env virtuale separato.esecuzione di un pacchetto python dopo la compilazione e il caricamento di pypicloud server di

Tutto sembra funzionare, tranne che per il percorso del file eseguibile ...

(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 

Se provo eseguire direttamente lo script, ottengo:

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

Tuttavia, posso eseguirlo via:

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

Sto facendo un errore durante la creazione del pacchetto? Da qualche parte in setup.cfg o setup.py?

Grazie !!!

+0

A cosa serve setup.py? – skyline75489

+0

Hai provato a eseguire 'myShtuff.py'? – kichik

risposta

9

È necessario un __main__.py nel pacchetto e un punto di ingresso definito in setup.py.

Vedi here e here ma in breve, i tuoi __main__.py corse qualunque sia la funzionalità principale è quando si esegue il modulo utilizzando python -m e setuptools può fare qualunque cosa funzioni arbitrarie che si desidera eseguire come script. Puoi fare entrambi o entrambi. Il tuo __main__.py assomiglia:

from .stuff import my_main_func 

if __name__ == "__main__": 
    my_main_func() 

e in setup.py:

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

Qui, myShtuffscript è quello che vuoi l'eseguibile di essere chiamato, myShtuff il nome del pacchetto, stuff il nome del file nel pacchetto (myShtuff/stuff.py) e my_main_func il nome di una funzione in tale file.

4

È necessario definire entry_point nel vostro setup.py al fine di eseguire direttamente qualcosa dalla riga di comando:

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

Maggiori dettagli possono essere trovati here.

Problemi correlati