Oftaj demandoj¶
Kutimaj demandoj pri konstruado, instalado kaj testado de la Python-biblioteko. Ĉiu respondo ligas al la paĝo, kie la temo estas traktata pli detale.
Kio estas la diferenco inter modulo, pako kaj biblioteko?
Modulo estas unuopa dosiero .py; pako estas dosierujo de moduloj importata
kiel unu unuo, kutime markita per __init__.py; biblioteko estas pako celita por
esti reuzata de alia kodo.
Distribuaĵo estas la instalebla pakaĵo, kiun pip alportas. Vidu
Kio estas biblioteko.
Ĉu mi bezonas setup.py? Kio estas pyproject.toml?
Ne — pyproject.toml estas la moderna, normigita anstataŭaĵo de setup.py. Ĝi
enhavas la metadatenojn de la projekto, la dependecojn kaj la konstruan agordon en
unu sola dosiero. Vidu Organizado § pyproject.toml.
Kial la kodo estas sub src/ anstataŭ ĉe la radiko de la deponejo?
Por ke la pako ne estu importebla hazarde de la radiko de la projekto. La
src/-strukturo devigas vin instali la pakon antaŭ ol importi ĝin, do viaj testoj
ruliĝas kontraŭ la instalita biblioteko ekzakte kiel ricevus ĝin uzanto. Vidu
Organizado § src.
Kio estas la diferenco inter requirements.txt kaj pyproject.toml?
pyproject.toml deklaras kion la biblioteko bezonas kiel parton de sia identeco
— la fonto de vero kiam iu instalas ĝin. requirements.txt estas oportuna listo
por fiksi reprodukteblan medion. Ĉi tiu biblioteko estas regul-bazita, do ĝi ne
havas rultempajn dependecojn kaj requirements.txt estas esence malplena. Vidu
Organizado § requirements.txt.
Kion faras __init__.py?
Ĝi markas dosierujon kiel regulan pakon kaj difinas kion la pako eksponas ĉe la importo. (De Python 3.3, dosierujo sen ĝi restas importebla, kiel nomspaca pako, sed biblioteko estu eksplicita.) Ĉi tie ĝi deklaras la version kaj, dum la biblioteko kreskas, estas kie reeksportiĝas la publikaj klasoj. Vidu Organizado § init.py.
Kiel mi instalas la bibliotekon en kajero de Google Colab?
Instalu ĝin rekte de GitHub en ĉelo, poste importu ĝin:
Vidu Instalado kaj uzo.
Kion signifas pip install -e \".[test]\"?
-e instalas la pakon en redaktebla reĝimo (ligilo al via fontkodo, do la
redaktoj efikas tuj), kaj .[test] ankaŭ instalas la kromaĵon test (pytest).
Ĝi estas la norma aranĝo por disvolvi la bibliotekon. Vidu
Instalado kaj uzo § Instali loke.
Mi instalis novan version en kajero sed nenio ŝanĝiĝis. Kial?
Python kaŝmemorigas la importitajn modulojn dum la sesio. Post instalado de nova versio, restartigu la rultempon (Runtime → Restart), por ke la nova kodo estu ŝargita. Vidu Instalado kaj uzo.
Por kio estas __all__?
Ĝi nomas la publikajn objektojn de modulo: ĝi dokumentas la celitan API-on kaj
regas kion alportas from esperantilo import *. La nomoj ekster ĝi (kaj tiuj
komenciĝantaj per _) estas traktataj kiel privataj. Vidu
API § Kio estas API ĉi tie.
Kial modeli la API-on laŭ spaCy?
Ĉar la tipita dezajno Doc / Token de spaCy estas pruvita, agrabla maniero
reprezenti analizitan tekston, kaj la regula gramatiko de Esperanto igas tiujn
atributojn kalkuleblaj per reguloj. Ĝi donas konkretan celon por imiti. Vidu
API § API laŭ la stilo de spaCy.
Kiel mi rulas la testojn?
Instalu la testan kromaĵon kaj rulu pytest:
pytest aŭtomate malkovras la dosierojn nomatajn test_*.py kaj la funkciojn
nomatajn test_*. Vidu
Testado.
Ĉu la testoj ruliĝas aŭtomate?
Jes. La tests.yml-laborfluo de GitHub Actions rulas pytest ĉe ĉiu push kaj
kunfanda peto, kaj la branĉoprotekto povas igi la sukceson de la testoj deviga
antaŭ kunfando. Vidu
Testado § Testoj en kontinua integrado.