2016-05-03 12 views
7

So come installare i pacchetti in Anaconda usando conda install e anche come creare pacchetti su PyPi che è descritto nel manual.Anaconda: include permanentemente pacchetti esterni (come in PYTHONPATH)

Ma come posso includere in modo permanente pacchetti/cartelle in Anaconda, ad es. con il codice al quale sto attualmente lavorando?

Il mio approccio attuale è quello di utilizzare sys:

import sys 
sys.path.append(r'/path/to/my/package') 

che non è davvero conveniente.

Eventuali suggerimenti?

Grazie in anticipo!

risposta

10

ho trovato due risposte alla mia domanda nel Anaconda forum:

1.) Mettere i moduli in in site-packages, vale a dire la directory $HOME/path/to/anaconda/lib/pythonX.X/site-packages che è sempre sul sys.path. Questo dovrebbe anche funzionare creando un collegamento simbolico.

2.) Aggiungere un file .pth alla directory $HOME/path/to/anaconda/lib/pythonX.X/site-packages. Questo può essere chiamato qualsiasi cosa (deve solo terminare con .pth). Un file .pth è solo un elenco separato da una nuova riga dei nomi di percorso completi delle directory che verranno aggiunti al percorso all'avvio di Python.

Entrambi funzionano in modo semplice e ho optato per la seconda opzione in quanto è più flessibile.

Grazie comunque!

2

La soluzione preferita sarebbe quella di creare il proprio pacchetto conda (informazioni here).

Un'altra soluzione potrebbe essere quella di creare un collegamento tra la directory del pacchetto e qualsiasi directory in sys.path. In questo modo, quando chiederai a python di importare il tuo pacchetto, anaconda cercherà nelle sue varie directory sys.path e leggerà il link al tuo pacchetto come se quel pacchetto fosse in una delle directory sys.path.

Il collegamento di una directory può essere eseguito facilmente con il comando ln (nome_collegamento). Ad esempio:

ln -s /path/to/my/package /path/to/anaconda/lib/python2.7/site-packages/ 

Il collegamento precedente consente di importare il pacchetto nell'ambiente predefinito di anaconda da qualsiasi directory. Questo non influenzerà nessuno degli altri ambienti.

Se si desidera aggiungere il pacchetto a un ambiente specifico (ad esempio - "myenv") all'interno di anaconda, è possibile collegare il pacchetto ad uno dei percorsi sys quel particolare ambiente:

ln -s /path/to/my/package /path/to/anaconda/env/myenv/lib/python2.7/site-packges/ 

Nota quanto segue:

  • Il collegamento della directory del pacchetto a un percorso sys, anziché spostare effettivamente la directory del pacchetto in un percorso sys, consente di mantenere il pacchetto nella directory desiderata.
  • Il flag -s genera un collegamento simbolico (molto simile a una scorciatoia).Se si sposta la directory del pacchetto, il collegamento non funzionerà. L'esecuzione di ln senza il flag -s genera un collegamento reale (come una copia speculare) che non sarà influenzato dallo spostamento (o addirittura dall'eliminazione ..) della directory del pacchetto. I pro ei contro dei soft link e degli hard link sono discussi here

  • Gli utenti di Windows devono utilizzare mklink. Per informazioni, guarda here.

Problemi correlati