"Kérjük, kattintson ide, ha vissza szeretne térni a szülőcikkhez."
Ez a cikk minimális, lépésenkénti útmutatót nyújt a projekten belüli Python-importálás helyes beállításához, csak normál szövegszerkesztő és terminál használatával.
Ez a cikk a szülőcikk „egyszerű” projektstruktúráját fogja használni, ahol a forrásmappák és a tesztmappák ugyanazon a szinten vannak közvetlenül a projekt gyökérmappája alatt.
project │ ├─── folder1 │ │ __init__.py │ │ file1.py │ ├─── folder2 │ │ __init__.py │ │ file2.py │ └─── tests │ test_file.py
N.B. Ez a projektstruktúra mindenki számára megfelelő, aki nem tervezi kódjának terjesztését. Ha azonban azt tervezi, hogy a kódját másoknak terjeszti, pl. a PyPI-n keresztül, fontolja meg egy
src
projektstruktúra használatát. Kövesse ezt a linket (hamarosan), ha lépésről lépésre szeretne útmutatót találni a projektfájl importálásához asrc
projektstruktúra használatával.
Nyilatkozatok importálása
Győződjön meg arról, hogy az összes importálási utasítás helyesen van megírva. Minden importnak abszolút importnak kell lennie, a projektgyökértől kezdve.
Tekintsük a project/folder1/file1.py
, amely egy egyszerű add()
függvényt tartalmaz.
# project/folder1/file1.py def add(num1, num2): return num1 + num2
Ezt a függvényt szeretnénk használni a project/folder2/file2.py
-ban. Az importálásunk egyszerűen from folder1 import file1
– egy abszolút import, amely a projekt gyökér alatt kezdődik.
# project/folder2/file2.py from folder1 import file1 print('1 + 2 =', file1.add(1, 2))
Győződjön meg arról, hogy a projekt összes importálása így van beállítva.
Importálás beállítása a terminálhoz
Az importálás megfelelő működéséhez a projektet megfelelő Python-csomaggá kell alakítania, és telepítenie kell.
Számos dolgot kell tennie:
- Hozzon létre egy venv-t (ha még nem tette meg)
- Frissítse a csomageszközöket a venv-ben
- Hozzon létre egy csomagot a projekthez
- Telepítse projektjét
Hozzon létre egy venv
Ha már létrehozta és aktiválta a venv-t, és beállította a VS kódot a venv használatára, nyugodtan hagyja ki ezt a részt.
A projekt telepítéséhez létre kell hoznia egy venv-t (a virtuális környezet rövidítése). A venv a Python könnyű változata, amely elkülönül a Python rendszertelepítésétől, és általában minden új Python-projekthez jön létre. A csomagok venv-re történő telepítése azt jelenti, hogy az egyes Python-projektek csomagjai el vannak különítve egymástól.
Nyisson meg egy új terminált, és győződjön meg arról, hogy a terminálkönyvtár a projekt gyökérmappájára van állítva. Ezután futtassa a következő parancsot a shellben:
- Windows 7_
- macOS/Linux:
python3 -m venv venv
C:\...\project> py -m venv venv
Ez a parancs utasítja a venv
csomagot, hogy hozzon létre egy új virtuális környezetet számunkra a venv
könyvtárnévvel.
project │ ├─── folder1 │ │ __init__.py │ │ file1.py │ ├─── folder2 │ │ __init__.py │ │ file2.py │ └─── tests │ │ test_file.py │ └─── venv
Aktiválja a venv-t. Ehhez futtassa a activate.bat
programot Windows CMD-héjakon, a activate.ps1
-t Windows Powershell-eken vagy a activate
-t macOS/Linux-héjakon. Ha látja a (venv)
előtagot a tolmácson, akkor tudni fogja, hogy a venv megfelelően aktiválva van.
C:\...\project> c:/.../project/venv/Scripts/activate.bat (venv) C:\...\project>
(A virtuális környezetekkel kapcsolatos további információkért látogasson el a következő linkre: https://docs.python.org/3/tutorial/venv.html )
Frissítse a csomageszközöket a venv-ben
A setuptools
segítségével Python-csomagot hozunk létre a projektből, a pip
-t pedig a helyi telepítéshez. Annak érdekében, hogy minden a lehető legzökkenőmentesebben menjen, ajánlatos mindkét csomagot naprakészen tartani.
Ha a terminál nyitva van és a venv aktív, futtassa a következő parancsot:
- Windows:
py -m pip install --upgrade pip setuptools
- macOS/Linux:
python3 -m pip install --upgrade pip setuptools
Ha azt az üzenetet kapja, hogy a pip
és a setuptools
is sikeresen telepítve lett, folytassa tovább.
Hozzon létre egy csomagot a projekthez
Most létre kell hoznia egy csomagot a projekthez. Ehhez egy setup.py
fájlt kell létrehozni a setuptools csomag segítségével, amelynek már elérhetőnek kell lennie a Python telepítésében.
A projekt gyökérmappája alatt hozzon létre egy setup.py
nevű fájlt.
project │ setup.py │ ├─── folder1 │ │ __init__.py │ │ file1.py │ ├─── folder2 │ │ __init__.py │ │ file2.py │ └─── tests │ │ test_file.py │ └─── venv
setup.py
népesítése így:
# /project/setup.py from setuptools import setup, find_packages setup( name='project', packages=find_packages(), )
Ennek a fájlnak a tartalmát egyelőre így hagyhatjuk a célunkra, ami az importálás helyben történő működését szolgálja. Ha később tervezi a kód terjesztését, akkor vissza kell térnie ehhez a fájlhoz, és szükség szerint módosítania kell.
A projekt telepítése
Most telepítse a projektet a venv-re. A projekt „szerkeszthető” módban lesz telepítve – ez annak köszönhető, hogy a telepítés minden módosítása automatikusan frissül, ahogy a projekt kódja megváltozik.
Menjen a terminálhoz. Győződjön meg arról, hogy a venv aktív, és a könyvtár a projekt gyökérre van állítva. Ezután futtassa a következő parancsot a shellben:
- Windows:
py -m pip install -e .
- macOS/Linux:
python3 -m pip install -e .
(venv) C:\...\project> py -m pip install -e .
Miután a shell azt mondja, hogy a projektet sikeresen telepítették, készen áll.
(venv) C:\...\project> py -m pip install -e . Obtaining file:///C:/.../project Installing collecting packages: project Running setup.py develop for project Successfully installed project
A projekt telepítésének további megerősítése egy .egg-info
mappa megjelenése a projekt mappájában.
project │ setup.py │ ├─── folder1 │ │ __init__.py │ │ file1.py │ ├─── folder2 │ │ __init__.py │ │ file2.py │ ├─── project.egg-info │ ├─── tests │ │ test_file.py │ └─── venv
És kész is vagyunk!
Körbejárás volt, de odaértünk! Ha most futtatja a kódot vagy a teszteket a héjból, mindennek működnie kell.
project/folder1/file1.py
:
def add(num1, num2): return num1 + num2
project/folder2/file2.py
:
from folder1 import file1 print('1 + 2 =', file1.add(1, 2))
Kód futtatása a terminálon keresztül:
(venv) C:\...\project> py folder2\file2.py 1 + 2 = 3
Tesztek futtatása a terminálon keresztül:
# output trimmed for brevity C:\...\project> pytest collected 1 item. tests\test_file.py 1 passed in 0.02s