(Následující informace se týkají pouze instalací programu Anaconda. Základní myšlenka platí pro jakoukoli instalaci Pythonu, ale přesné způsoby řešení se liší)
Předpokládejme, že jste napsali modul Pythonu nazvaný například coolscript
, který obsahuje různé skvělé funkce, které jste napsali. Možná jste ho uložili na plochu svého počítače. Možná pak přejdete do aplikace Anaconda Navigator, spustíte Spyder nebo jiný program v rámci Ancondy a pokusíte se tyto funkce importovat pomocí řádku kódu typu,
from coolscript import *
Ale bohužel se objeví chyba:
ModuleNotFoundError: No module named 'coolscript'
To může způsobovat spousta věcí, ale možná je to tím, že adresář, ve kterém se coolscipt.py
nachází, není součástí PYTHONPATH
, tj.e., množiny adresářů, ve kterých Python hledá potřebné soubory. Zjistíme, co je náš PYTHONPATH
, a podíváme se, zda obsahuje náš skript. Spusťte příkaz Anaconda Prompt. Můžete to udělat přímo z nabídky Start v systému Windows nebo z aplikace Launcher v systému MacOS, ale další způsob, jak jej spustit, je spustit aplikaci Anaconda Navigator a spustit terminál jako na obrázku níže:
Nyní spusťte tento příkaz, abyste viděli své PYTHONPATH
:
python -c "import sys; print('\n'.join(sys.path))"
V mém případě jsem na osobním počítači se systémem Windows a čerstvou instalací Anaconda3 dostal následující výsledek:
Pokud se můj skript nenachází v jedné z těchto složek (nebo jejich podsložek), python jej nenajde, pokud při volání z pythonu výslovně neuvedete kompletní cestu (nebo pokud python nespustíte v adresáři, ve kterém se soubor nachází). V ideálním případě se chceme tomuto problému vyhnout správnou instalací modulů. Pokud je autorem kódu modulu někdo jiný, je nejlepším způsobem, jak to udělat, nainstalovat jej pomocí conda
nebo, pokud to není možné, pomocí pip
nebo souboru setup.py
. To jsou také nejlepší postupy pro vlastní kód.
Někdy je však užitečné mít pohodlný „pracovní adresář“ pro dočasný nebo nedokončený kód a nemusí se vám chtít navigovat python do tohoto adresáře při každém volání kódu. Jedním ze způsobů, jak tento problém vyřešit, je přidat preferovaný adresář do PYTHONPATH
.
Pokud chceme dočasně přidat adresář do našeho pythonu, můžeme jednoduše spustit následující příkazy v terminálu pythonu, který používáme ke spuštění skriptu:
import syssys.path.append(r'/path/to/my/package')
kde „/path/to/my/package“ by mělo být změněno na cestu k adresáři obsahujícímu soubor vašeho skriptu pythonu. Tento přístup by fungoval pouze do té doby, než bychom zavřeli danou instanci překladače jazyka python; museli bychom ji znovu spustit při každém spuštění příkazového řádku jazyka python.
Pokud chceme do našeho adresáře PYTHONPATH
přidat složku trvaleji, můžeme tak učinit vytvořením souboru .pth
v adresáři site-packages
. Na obrázku výše si všimněte složky site-packages
. Každá instalace programu Anaconda by měla mít složku s tímto názvem. V tomto adresáři vytvořte nový textový soubor a pojmenujte jej tak, aby měl příponu .pth
(např. soubor s názvem extrapythonfolders.pth
by byl v pořádku). V tomto textovém souboru můžete vypsat adresáře, které chcete zahrnout do svého PYTHONPATH
, a to po jednom na řádek. Například v počítači se systémem Windows mohu přidat řádek, který zní C:\myscripts
. Uložte soubor s těmito novými umístěními a poté zkuste znovu spustit následující příkaz v okně Anaconda Prompt:
python -c "import sys; print('\n'.join(sys.path))"
Měli byste vidět, že vaše nové adresáře jsou nyní zahrnuty (možná však budete muset restartovat Anacondu, aby fungovala ve všech svých programech). Nyní byste měli být schopni importovat moduly nebo spouštět kód z tohoto adresáře bez ohledu na to, kde ve své struktuře souborů začínáte python.