Jak python znajduje plik modułu, jeśli instrukcja import zawiera tylko nazwę pliku?
Wszędzie widzę kod Pythona importujący moduły za pomocą import sys
LUB import mymodule
Jak interpreter znajduje poprawny plik, jeśli nie podano katalogu lub ścieżki?
4 answers
Http://docs.python.org/3/tutorial/modules.html#the-module-search-path
6.1.2. Ścieżka Wyszukiwania Modułów
Gdy importowany jest moduł o nazwie
spam
, interpreter najpierw wyszukuje wbudowany Moduł o tej nazwie. Jeśli nie zostanie znaleziony, wyszukuje plik o nazwiespam.py
na liście katalogów podanych przez zmiennąsys.path
.sys.path
jest inicjowany z tych miejsc:
- katalog zawierający skrypt wejściowy (lub bieżący katalog gdy nie podano PLIKU).
PYTHONPATH
(lista nazw katalogów, o tej samej składni co zmienna powłokiPATH
).- domyślna zależna od instalacji.
Uwaga: w systemach plików obsługujących dowiązania symboliczne katalog zawierający skrypt wejściowy jest obliczany po wykonaniu dowiązania symbolicznego. Innymi słowy katalog zawierający dowiązanie symboliczne nie jest dodawany do ścieżki wyszukiwania modułu.
Po inicjalizacji Python programy mogą modyfikować
sys.path
. Katalog zawierający uruchomiony skrypt jest umieszczony na początku ścieżki wyszukiwania, przed standardową ścieżką biblioteki. Oznacza to, że skrypty w tym katalogu będą ładowane zamiast modułów o tej samej nazwie w katalogu biblioteki. Jest to błąd, chyba że wymiana jest przeznaczona. Więcej informacji można znaleźć w sekcji Moduły Standardowe.
Aby uzyskać informacje na temat "domyślnej instalacji", zobacz dokumentację na the site
moduł .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-09 06:22:52
Możesz również zobaczyć bieżącą ścieżkę za pomocą modułu sys
import sys
print(sys.path)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-13 19:10:26
Używa PYTHONPATH , ustawionego jako zmienna środowiskowa, do wyszukiwania pakietów (folderów zawierających pliki __init__.py
) i modułów (lub, jeśli już załadowany raz, pobiera obiekt modułu z sys.modules
).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-06 15:58:32
Python ma zmienną path, taką jak ta, którą masz w terminalu. Python szuka modułów w folderach wewnątrz tej ścieżki lub w folderze, w którym znajduje się twój program.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-06 15:58:03