2013-06-21 10 views
5

Mi sono fatto un piccolo modulo che mi è capitato di usare parecchio. Ogni volta che ne ho bisogno, lo copio semplicemente nella cartella in cui voglio usarlo. Dato che sono pigro, volevo installarlo in modo da poterlo chiamare da qualsiasi luogo, anche dal prompt interattivo. Quindi ho letto un po 'di installazione qui, e ho concluso che dovevo copiare il file su /usr/local/lib/python2.7/site-packages. Tuttavia, sembra che non faccia nulla.Come rendere il mio modulo Python disponibile a livello di sistema su Linux?

Qualcuno sa dove devo copiare il mio modulo affinché funzioni a livello di sistema?

+1

Vedere la [documentazione del modulo del sito] (http://docs.python.org/2/library/site.html#module-site). È necessario aggiungere un file di configurazione del percorso '.pth' a una delle directory. – martineau

risposta

8

Esistono metodi per installare i moduli Python in tutto il sistema. Si consiglia di dare un'occhiata a distutils. Un buon tutorial per distutils2 (la versione attuale) può essere trovato here.

Fondamentalmente è necessario scrivere un file setup.py che dice a distutils cosa fare. Poi si può semplicemente

python setup.py install 

con i permessi di root per installare il tutto il sistema del modulo. Ci sono esempi buoni e facili, in più è il modo più pulito che io possa immaginare.

+0

Ho già visto questa opzione, ma ho pensato che non sarebbe stato necessario creare questo script di installazione se potessi semplicemente fare una 'mv mymodule.py/some/directory' .. Non c'è un modo semplice senza creare tutto questo script di installazione? – kramer65

+0

Probabilmente è sufficiente copiarlo in qualche directory che è contenuta in sys.path, come già provato. Tuttavia, ci sono alcune altre cose di cui hai bisogno (come i permessi sui file, le hai controllate?) E forse hai bisogno di mettere un riferimento al tuo modulo da qualche altra parte (non ne so nulla). –

+0

Quindi, come installare 'python setup.py install 'per copiare il codice in' site-packages'? – Dims

1

Se si utilizza Ubuntu, copiare i file su /usr/local/lib/python2.7/dist-packages. Il seguente comando ti mostrerà dove copiare.

python -c "from distutils.sysconfig import *; print(get_python_lib())" 

Se sei l'unico a utilizzare il modulo, copiare i file di ~/.local/lib/python2.7/site-packages.

+0

Questo comando mi ha dato /usr/lib/python2.7/dist-packages, quindi ho spostato il mio file lì. Quando ora inserisco il prompt interattivo Python e provo a importare mymodule, ottengo comunque un ImportError .. – kramer65

+1

@ kramer65, ho caricato screencast su http://ascii.io/a/3713. – falsetru

+0

Questa è la risposta giusta. puoi mettere un link simbolico all'output della posizione qui e funzionerà immediatamente. – v4gil

1

In una delle directory elencate quando si digita sys.path nel prompt di Python. È inoltre possibile aggiungere la directory che contiene il file da modifiying variabile PYTHONPATH ambiente:

# ~/.bashrc file 
export PYTHONPATH+=:/some/dir 
+0

/usr/lib/python2.7/dist-packages è anche in sys.path, ma quando sposto il mio file lì e provo ad importarlo dal prompt python interattivo ho ancora un ImportError .. – kramer65

+0

@ kramer65: allora il tuo la dichiarazione di importazione è probabilmente sbagliata. – michaelmeyer

+0

Il nome del file è mymodule.py e ha autorizzazioni eseguibili. Sulla riga di comando interattiva di Python, digito semplicemente "import mymodule". Potrebbe esserci qualcosa di sbagliato in questo? – kramer65

3

La risposta è: è tutta una questione di autorizzazioni.

Non è sufficiente posizionare il file nella posizione corretta, come, ad esempio esempio: /usr/local/lib/python2.7/dist-packages, è inoltre necessario assicurarsi che il file può essere letto dal il processo che stai eseguendo, in questo caso, python.

Assicurarsi che gli "altri" utenti abbiano accesso in lettura al file. Aprire la console bash ed eseguire questo:

sudo chmod o+r "yourmodule.py" 
[Introduce the password] 

Dopo questo andare di nuovo al pitone e provare l'importazione:

import "yourmodule" 

Finché il percorso in cui si trova il file .py è presente in PYTHONPATH + il file è leggibile, quindi dovresti essere autorizzato ad importarlo.

0

Un paio di cose.

Prima il modulo deve, (credo), essere in una directory che corrisponde al nome del modulo.

Inserire la directory del modulo in una delle directory in PYTHONPATH (io uso /usr/lib/pymodules/pythonV.x/).È possibile trovare una directory appropriata nel percorso utilizzando

import sys 
print(sys.path) 

dal prompt di python.