Oto struktura katalogów:Jak importować skrypt Python z katalogu rodzeństwa?
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
Jak importować bar.py do foo.py?
Oto struktura katalogów:Jak importować skrypt Python z katalogu rodzeństwa?
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
Jak importować bar.py do foo.py?
Jeśli wszystkie występujące katalogi są Python pakiety, czyli wszystkie one zawierają __init__.py
, wówczas można użyć
from ..bar_dir import bar
Jeżeli katalogi nie są pakiety Pythona, można to zrobić przez aprowizacji z sys.path
, ale nie powinieneś.
to nie będzie działać, jeśli chcesz zaimportować w pakiecie i nie po prostu uruchamiasz pytona od rodzeństwa. W tym przypadku sys.path.append jest sposobem na przejście na – mhstnsc
@mhstnsc Powiedziałbym, że w tym przypadku zrobiłeś coś złego, ale jeśli jest to po prostu jakiś hacky skrypt, może być OK, aby zadzwonić z 'sys.path'. –
Nie jest to złe, ale przy uruchomieniu głównego modułu nie można wykonać względnego importu. https://www.python.org/dev/peps/pep-0366/ – mhstnsc
Można użyć modułów sys
i os
do ogólnych importów. W foo.py
początek linii
import sys
import os
sys.path.append(os.path.abspath('../bar_dir'))
import bar
Patrz: https://stackoverflow.com/questions/6323860/sibling-package-imports/27878845#27878845 –