le cartelle di importazione possono essere estratte aggiungendo il seguente codice sorgente:
import sys
print sys.path
Un esempio di generazione di collegamento simbolico automatico sarebbe:
ln -s \`pip show em | grep "Location"| cut -d " " -f2\` \`python -m site --user-site\`
invece di "em" puoi usare un altro pacchetto che hai "appena installato ma il python non può vederlo"
di seguito spiegherò più in dettaglio come richiesto nel commento.
supponiamo di aver installato il modulo python em o pyserial con il seguente comando (gli esempi sono per ubuntu):
sudo pip install pyserial
e l'output è come questo:
Collecting pyserial
Downloading pyserial-3.3-py2.py3-none-any.whl (189kB)
100% |████████████████████████████████| 194kB 2.3MB/s
Installing collected packages: pyserial
Successfully installed pyserial-3.3
la domanda sarebbe la seguente: python non può vedere il modulo pyserial, perché? perché la posizione in cui è stato installato il modulo non è quella che Python sta cercando per il tuo account utente specifico.
soluzione: dobbiamo creare un collegamento simbolico dal percorso in cui pyserial è arrivato al percorso in cui sta cercando il tuo python.
Il comando di creazione del collegamento simbolico sarebbe:
ln -s <what_to_link> <where_to_link>
invece di digitare la posizione esatta, chiediamo a pip di dirci dove ha memorizzato i moduli eseguendo il comando:
pip show pyserial | grep "Location"| cut -d " " -f2
invece di digitare la posizione esatta, chiediamo a python di dirci dove cerca i moduli installati eseguendo il comando:
python -m site --user-site
entrambi i comandi devono essere preceduti dal carattere "` "(di solito a sinistra del tuo tasto 1 per le tastiere americane)
nel risultato verrà fornito il seguente comando per ln e verrà creato il collegamento simbolico mancante:
ln -s /usr/local/lib/python2.7/dist-packages /home/<your_username>/.local/lib/python2.7/site-packages
o qualcosa di simile, a seconda delle impostazioni predefinite della distribuzione e di python / pip.