(Următoarele informații se aplică numai la instalațiile Anaconda. Ideea de bază se aplică oricărei instalații python, dar modalitățile precise de abordare a problemei sunt diferite.)
Să presupunem că scrieți un modul Python numit, să zicem, coolscript
care are tot felul de funcții interesante pe care le-ați scris. Poate că l-ați salvat pe desktop-ul computerului dumneavoastră. Poate că apoi mergeți la Anaconda Navigator, porniți Spyder sau un alt program din Anconda și încercați să importați acele funcții cu o linie de cod de genul,
from coolscript import *
Dar, din păcate, primiți o eroare:
ModuleNotFoundError: No module named 'coolscript'
Multe lucruri ar putea cauza acest lucru, dar poate că este vorba de faptul că directorul în care se află coolscipt.py
nu face parte din PYTHONPATH
, adică.e., setul de directoare de fișiere în care Python caută fișierele de care are nevoie. Să aflăm care este PYTHONPATH
și să vedem dacă acesta conține scriptul nostru. Porniți un Prompt Anaconda. Este posibil să puteți face acest lucru direct din meniul Start în Windows sau din aplicația Launcher în MacOS, dar un alt mod în care îl puteți lansa este prin lansarea Anaconda Navigator și lansarea unui terminal, ca în captura de ecran de mai jos:
Acum, rulați această comandă pentru a vă vedea PYTHONPATH
:
python -c "import sys; print('\n'.join(sys.path))"
În cazul meu, obțin următorul rezultat pe o mașină personală bazată pe Windows cu o instalare proaspătă a Anaconda3:
Dacă scriptul meu nu se află într-unul din aceste foldere (sau în subfolderele lor), el nu va fi găsit de python decât dacă indicați explicit calea completă atunci când îl apelați din python (sau dacă porniți python în directorul în care se află fișierul). În mod ideal, dorim să evităm această problemă prin instalarea corectă a modulelor. Dacă este altcineva a scris modulul de cod, cel mai bun mod de a face acest lucru este să îl instalați folosind conda
sau, dacă acest lucru nu este posibil, folosind pip
sau un fișier setup.py
. Acestea sunt, de asemenea, cele mai bune practici pentru propriul cod.
Cu toate acestea, uneori este util să aveți un „director de lucru” convenabil pentru codul temporar sau neterminat și este posibil să nu doriți să navigați cu python în acel director de fiecare dată când apelați codul. O modalitate de a rezolva această problemă este să adăugați directorul preferat la PYTHONPATH
.
Dacă dorim să adăugăm temporar un director la python-ul nostru, am putea rula pur și simplu următoarele comenzi în terminalul python pe care îl folosim pentru a rula scriptul:
import syssys.path.append(r'/path/to/my/package')
unde „/path/to/my/package” ar trebui să fie schimbat cu calea de acces la dosarul care conține fișierul scriptului python. Această abordare ar funcționa doar până când am închide acea instanță a compilatorului python; ar trebui să o rulăm din nou de fiecare dată când pornim o linie de comandă python.
Dacă dorim să adăugăm mai permanent un folder la PYTHONPATH
nostru, putem face acest lucru prin crearea unui fișier .pth
în directorul site-packages
. În captura de ecran de mai sus, observați folderul site-packages
. Fiecare instalare Anaconda ar trebui să aibă un folder cu acest nume. Creați un nou fișier text în acel director, numindu-l astfel încât să aibă extensia de fișier .pth
(de exemplu, un fișier numit extrapythonfolders.pth
ar fi bun). În cadrul acelui fișier text, puteți enumera directoarele pe care doriți să le includeți în PYTHONPATH
, câte unul pe linie. De exemplu, pe o mașină Windows aș putea adăuga o linie care să sune C:\myscripts
. Salvați fișierul cu aceste noi locații și apoi încercați din nou să rulați următoarea comandă pe Anaconda Prompt:
python -c "import sys; print('\n'.join(sys.path))"
Ar trebui să vedeți că noile directoare sunt acum incluse (este posibil să trebuiască să reporniți Anaconda pentru a o face să funcționeze în toate programele sale, totuși). Ar trebui să puteți acum să importați module sau să rulați cod din acel director, indiferent de locul în care începeți python în structura dvs. de fișiere.
.