Importere filer fra en annen mappe

Jeg har følgende mappestruktur.

application/app/folder/file.py (søknad/app/mappe/fil.py)

og jeg vil importere noen funksjoner fra file.py i en annen Python-fil som ligger i

application/app2/some_folder/some_file.py.

Jeg' har prøvd

from application.app.folder.file import func_name (fra applikasjon.app.mappe.fil)

og noen andre forskjellige forsøk, men så langt klarte jeg ikke å importere riktig. Hvordan kan jeg gjøre dette?

Som standard kan du ikke det. Når du importerer en fil, søker Python bare i den gjeldende katalogen, katalogen som inngangspunktskriptet kjører fra, og sys.path som inkluderer steder som pakkeinstallasjonskatalogen (det er faktisk litt mer komplekst enn dette, men dette dekker de fleste tilfeller).

Du kan imidlertid legge til Python-banen ved kjøretid:

# some_file.py
import sys
# insert at 1, 0 is the script path (or '' in REPL)
sys.path.insert(1, '/path/to/application/app/folder')

import file
Kommentarer (18)

Ikke noe galt med:

from application.app.folder.file import func_name

Bare sørg for at folder også inneholder en __init__.py, slik at den kan inkluderes som en pakke. Ikke sikker på hvorfor de andre svarene snakker om PYTHONPATH.

Kommentarer (18)

Jeg tror en ad-hoc måte ville være å bruke miljøvariabelen PYTHONPATH som beskrevet i dokumentasjonen: Python2, Python3.

# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH

# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%
Kommentarer (2)