π ΠΠ°ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π² Python?
ΠΠ»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ sys ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΡΠ΅ΠΉ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import sys
sys.path.append('/ΠΏΡΡΡ/ΠΊ/Π²Π°ΡΠ΅ΠΉ/ΠΏΠ°ΠΏΠΊΠ΅')
import Π²Π°Ρ_ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ /ΠΏΡΡΡ/ΠΊ/Π²Π°ΡΠ΅ΠΉ/ΠΏΠ°ΠΏΠΊΠ΅ Π½Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Π° Π²Π°Ρ_ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ sys.path, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΡΡΠ΅ΠΉ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ import Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
Python: ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Python Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°.
ΠΠ΅ΡΠΎΠ΄ 1: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ sys.path.append()
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΡΡΡΡ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ - ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ sys.path
. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ sys.path.append()
. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
import sys
sys.path.append('ΠΏΡΡΡ_ΠΊ_ΠΏΠ°ΠΏΠΊΠ΅_Ρ_ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ')
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ Π΄Π²ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Python Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅.
ΠΠ΅ΡΠΎΠ΄ 2: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°
ΠΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°. ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
from ..ΠΏΠ°ΠΏΠΊΠ°_Ρ_ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ import Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠΎΠ΄ΡΠ»Ρ
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π΄Π²Π΅ ΡΠΎΡΠΊΠΈ "..", ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ ΡΡΠΎΠ²Π½Π΅ΠΌ Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠ΅ΡΠΎΠ΄ 3: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ PYTHONPATH
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ - ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΈ ΠΊ ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ PYTHONPATH. ΠΠΎΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ:
export PYTHONPATH=$PYTHONPATH:ΠΏΡΡΡ_ΠΊ_ΠΏΠ°ΠΏΠΊΠ΅_Ρ_ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Python Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅.
ΠΠ΅ΡΠΎΠ΄ 4: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ imp
ΠΠΎΠ΄ΡΠ»Ρ imp
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ imp.find_module
. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ:
import imp
module_path = 'ΠΏΡΡΡ_ΠΊ_ΠΏΠ°ΠΏΠΊΠ΅_Ρ_ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ'
module_name = 'Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠΎΠ΄ΡΠ»Ρ'
module_info = imp.find_module(module_name, [module_path])
module = imp.load_module(module_name, *module_info)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ imp.find_module()
, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΏΡΡΠΈ ΠΈ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ imp.load_module()
.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π΄Π΅ ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ my_module
ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ my_package
. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΡΠ° ΠΏΠ°ΠΏΠΊΠ° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
import sys
sys.path.append('..')
from my_package import my_module
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΡΡ ΠΏΠ°ΠΏΠΊΡ Π² ΡΠΏΠΈΡΠΎΠΊ sys.path
Ρ ΠΏΠΎΠΌΠΎΡΡΡ sys.path.append()
. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ my_module
ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° my_package
.
ΠΡΠ²ΠΎΠ΄
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π² Python. ΠΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π£ΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ!