2016-04-15 8 views
1

Nach der Installation Fabric mit sudo pip install fabric auf Ubuntu 14.04, kann ich fab Befehl in der Konsole verwenden, die eigentlich ein ausführbares Skript ist "/ usr/local/bin/fab".Wie macht Pip ein Paket ausführbar?

Soweit ich weiß, sudo pip install wird ein Paket unter /usr/local/lib/python2.7/dist-packages setzen und ich einige Kopiervorgang in fabric/setup.py setzen Sie das Skript „fab“ in „/ usr/local/bin“ nicht finden.

Also wie und wann sudo pip install fabric Datei "fab" in "/ usr/local/bin"?

Antwort

5

pip tut dies nicht, das Paket setup.py tut (über die setuptools library). Alle pip ist das Paket suchen, laden Sie es und führen Sie python setup.py install in diesem Paket, um es zu installieren.

setuptools hat eine concept of entry points, willkürliche Konfiguration in Python-Code für diese suchen. Ein solcher Einstiegspunkt ist der Einstiegspunkt console_scripts, der Befehle und die Python-Modulplus-Funktion bezeichnet, die zum Ausführen dieser Befehle verwendet wird. Die setup.py file for Fabric hat dies:

entry_points={ 
    'console_scripts': [ 
     'fab = fabric.main:main', 
    ] 
}, 

Dies sagt setuptools einen fab Befehl zu erstellen, die die main() Funktion im fabric.main Modul ausgeführt werden, wenn Sie es aufrufen.

Siehe die Automatic Script Creation section in der setuptools Dokumentation.

+0

Der Abschnitt [Automatische Skripterstellung] (https://pythonhosted.org/setuptools/setuptools.html#automatic-script-creation) erwähnt nicht, wo die Konsolenskripts abgelegt werden sollen. Also ist "/ usr/loca/bin" in setuptools definiert und kann nicht von den Paketentwicklern konfiguriert werden, stimmt das? – Chad

+1

@Chad: Es wird durch die 'sys.exec_prefx', IIRC, der Speicherort, in dem Sie die' Python'-Binärdatei in installiert. –

+1

@Chad: Sie können immer ein virtualenv erstellen und Fabric in das installieren; dann wird der virtualenv 'bin /' Pfad verwendet. –

Verwandte Themen