Dosyaları farklı klasörden içe aktarma

Aşağıdaki klasör yapısına sahibim.

application/app/folder/file.py

'da bulunan başka bir Python dosyasında file.py'den bazı fonksiyonları içe aktarmak istiyorum.

application/app2/some_folder/some_file.py

Denedim.

from application.app.folder.file import func_name

ve diğer bazı çeşitli denemeler yaptım ama şimdiye kadar düzgün bir şekilde içe aktarmayı başaramadım. Bunu nasıl yapabilirim?

Varsayılan olarak, yapamazsınız. Bir dosyayı içe aktarırken, Python yalnızca geçerli dizini, giriş noktası betiğinin çalıştığı dizini ve paket yükleme dizini gibi konumları içeren sys.pathi arar (aslında bundan biraz daha karmaşıktır, ancak bu çoğu durumu kapsar).

Ancak, Python yoluna çalışma zamanında ekleme yapabilirsiniz:

# 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
Yorumlar (18)

Yanlış bir şey yok:

from application.app.folder.file import func_name

Sadece klasörün ayrıca bir __init__.py içerdiğinden emin olun, bu bir paket olarak dahil edilmesini sağlar. Diğer cevapların neden PYTHONPATH hakkında konuştuğundan emin değilim.

Yorumlar (18)

Bence geçici bir yol, belgelerde açıklandığı gibi ortam değişkeni PYTHONPATH kullanmak olacaktır: Python2, Python3

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

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