Making Anaconda Python Find Your Python Scripts – Modifying the PYTHONPATH

(Seuraavat tiedot koskevat vain Anaconda-asennuksia. Perusajatus pätee mihin tahansa python-asennukseen, mutta tarkat tavat käsitellä asiaa ovat erilaiset.)

Es oletetaan, että kirjoitat Python-moduulin nimeltä vaikkapa coolscript, jossa on kaikenlaisia kirjoittamiasi hienoja funktioita. Ehkä olet tallentanut sen tietokoneesi työpöydälle. Ehkä sitten menet Anaconda Navigatoriin, käynnistät Spyderin tai jonkin muun ohjelman Ancondassa ja yrität tuoda nuo funktiot sellaisella koodirivillä kuin,

from coolscript import *

Mutta valitettavasti saat virheen:

ModuleNotFoundError: No module named 'coolscript'

Tämän voi aiheuttaa moni asia, mutta ehkä se johtuu siitä, että hakemisto, jossa coolscipt.py sijaitsee, ei ole osa PYTHONPATH, eli.e., tiedostohakemistojen joukkoon, josta Python etsii tarvitsemiaan tiedostoja. Selvitetään, mikä meidän PYTHONPATH on ja katsotaan, sisältääkö se skriptimme. Käynnistä Anaconda-kehote. Voit ehkä tehdä sen suoraan Käynnistä-valikosta Windowsissa tai Launcher-sovelluksesta MacOS:ssä, mutta toinen tapa on käynnistää se käynnistämällä Anaconda Navigator ja käynnistämällä terminaali kuten alla olevassa kuvakaappauksessa:

Ajoita nyt tämä komento nähdäksesi PYTHONPATH:

python -c "import sys; print('\n'.join(sys.path))"

Minun tapauksessani saan seuraavan tuloksen henkilökohtaisella Windows-pohjaisella koneella, jossa on tuore Anaconda3-asennus:

Jos skriptini ei ole jossakin näistä kansioista (tai niiden alikansioista), python ei löydä sitä, ellet ilmoita nimenomaisesti koko polkua, kun kutsut sitä pythonista (tai jos käynnistät pythonin hakemistossa, jossa tiedosto sijaitsee). Ihannetapauksessa haluamme välttää tämän ongelman asentamalla moduulit oikein. Jos joku muu on kirjoittanut koodimoduulin, paras tapa on asentaa se käyttämällä conda tai, jos se ei ole mahdollista, käyttämällä pip tai setup.py-tiedostoa. Nämä ovat parhaita käytäntöjä myös omalle koodille.

Joskus on kuitenkin hyödyllistä, että väliaikaiselle tai keskeneräiselle koodille on kätevä ”työhakemisto”, eikä pythonia välttämättä haluta navigoida tuohon hakemistoon joka ikinen kerta, kun koodia kutsutaan. Yksi tapa ratkaista tämä ongelma on lisätä haluamasi hakemisto PYTHONPATH.

Jos haluamme tilapäisesti lisätä hakemiston pythoniin, voisimme yksinkertaisesti suorittaa seuraavat komennot python-päätteessä, jota käytämme skriptin suorittamiseen:

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

jossa ”/path/to/my/package” olisi muutettava python-skriptitiedostosi sisältävän kansion tiedostopoluksi. Tämä lähestymistapa toimisi vain siihen asti, kunnes sulkisimme kyseisen python-kääntäjän instanssin; meidän täytyisi suorittaa se uudelleen joka kerta, kun käynnistämme python-komentorivin.

Jos haluamme lisätä kansion pysyvämmin PYTHONPATH-hakemistoon, voimme tehdä sen luomalla .pth-tiedoston site-packages-hakemistoon. Huomaa yllä olevassa kuvakaappauksessa site-packages-kansio. Jokaisessa Anaconda-asennuksessa pitäisi olla tämän niminen kansio. Luo tuohon hakemistoon uusi tekstitiedosto ja nimeä se siten, että sillä on tiedostopääte .pth (esim. tiedosto nimeltä extrapythonfolders.pth käy hyvin). Tuossa tekstitiedostossa voit luetella hakemistot, jotka haluat sisällyttää PYTHONPATH:ään, yksi per rivi. Esimerkiksi Windows-koneessa voisin lisätä rivin C:\myscripts. Tallenna tiedosto näillä uusilla sijainneilla ja yritä sitten uudelleen ajaa seuraava komento Anacondan komentorivillä:

python -c "import sys; print('\n'.join(sys.path))"

Se pitäisi näkyä, että uudet hakemistosi ovat nyt mukana (saatat tosin joutua käynnistämään Anacondan uudelleen, jotta se toimisi kaikissa ohjelmissaan). Sinun pitäisi nyt pystyä tuomaan moduuleja tai ajamaan koodia kyseisestä hakemistosta riippumatta siitä, mistä aloitat pythonin tiedostorakenteessasi.

Jätä kommentti