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?

Author: ArtOfWarfare, 2013-03-06

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 nazwie spam.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łoki PATH).
  • 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ł .

 48
Author: dm03514,
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)
 20
Author: reptilicus,
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).

 5
Author: Silas Ray,
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.

 0
Author: alestanis,
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