Tak więc, bawię się pakowaniem skryptu Pythona, który napisałem, i ma moduł częściowy, nazwijmy go: submodule
. Struktura folderów wygląda następująco:Python może zaimportować moduł, który nie jest zainstalowany
cool_script/
setup.py
cool_script.py
submodule/
__init__.py
implementation.py
Teraz, po wielu pip install .
i pip install -e .
połączeń, mam sytuację, w której mogą być importowane submodule
globalnie. Bez względu na to, gdzie w moim systemie, to zawsze działa:
$ python3
[...]
>>> import submodule
>>> submodule.__file__
'/home/me/fake/path/cool_script/submodule/__init__.py'
Ale nie wiem dlaczego.
Pakiet, który zrobiłem, został odinstalowany ponownie, a pip nie może znaleźć modułu podległego w swoim indeksie. Nie ma nic w dist-pakietach albo, ręcznie usunięty cool_script.egg-link
że wciąż siedzą tam:
$ ls /usr/local/lib/python3.4/dist-packages | ack cool
$ ls /usr/local/lib/python3.4/dist-packages | ack submodule
$
PYTHONPATH
jest pusta, a także:
$ echo $PYTHONPATH
$
Dlaczego Python znać lokalizację submodule
? Jak mogę się dowiedzieć?
Czy został zainstalowany w virtualenv? Czy to system Linux? –
To naprawdę jest system Linux i nie, przeprowadziłem te eksperymenty w moim środowisku globalnym. Wiem, że to było bardzo głupie. Nauczyłem się, jak sądzę. – iFreilicht
Może to zabrzmieć głupio, ale czy próbowałeś zrestartować komputer? Być może jest to po prostu zbuforowane gdzieś – RunOrVeith