Rozhodol som sa zúčastniť sa a potreboval som na to použiť balíky na riešenie optimalizačných úloh. Vybral som si nástroj or-tools od Googlu, ktorý predstavuje rozhranie pre rôznych riešiteľov. Obsahuje niekoľko optimalizačných nástrojov, ale jeho tvorcovia tvrdia, že podporuje aj niekoľko externých balíkov, vrátane komerčných Gurobi a CPLEX. Avšak sme chudobní a použijeme bezplatné SCIP a GLPK (od tuzemského vývojára, mimochodom). Na moje prekvapenie som nenašiel žiadne inštrukcie o tom, ako rozbehnúť toto všetko v virtuálnom prostredí Pythonu, ani v našich, ani v anglicky hovoriacich segmentoch internetu, a tak som musel trocha zápasiť. Pre tých, ktorí veľmi pospíchajú, čítajte hneď , ostatným ponúkam spoznať moju grafomániu, popisujúcu peripetie inštalácie googlovského softvéru. Áno, zabudol som povedať, že všetko sa inštalovalo na Manjaro Linuxe.

Prvé kroky
Všetky tri balíky existujú v repozitári Pythonu, takže ich inštalujeme pomocou pip.
Každý z nich má svoje rozhranie, a or-tools bol vybraný práve na to, aby som mohol skúšať rôzne balíky, bez podstatného prepisovania programu, takže úlohou je, aby or-tools prepojil tieto riešitele a umožnil ich spúšťanie cez seba. A čo si myslíte? Nainštalovaný or-tools cez pip nevidí inštalované riešitele cez pip a oni nevidia jeho (kto by to mohol povedať). Znamená to, že sa musíme pozrieť, čo píšu v .
Dokumentácii píšu, že je potrebné zostaviť z prameňov, aby or-tools prepojil externé balíky. Skúšame zostaviť, a nič sa nedarí, pretože inštalované riešitele cez pip nie sú viditeľné.
Teda najjednoduchšie spôsoby inštalácie všetkých balíkov cez pip nefungujú, pretože or-tools neprepája riešitele, riešitelia nenainštalujú knižnice tak, ako si or-tools želá, všetci hádžu chyby a nazývajú ťa hlupákom a posmievajú sa ti.
Ďalej v píšu, že je potrebné zostaviť riešitele z prameňov, potom z prameňov zostaviť samotný or-tools. Povedané-skonané! Nainštaloval som SCIP, nainštaloval som GLPK, ale objavil sa nepopísaný v dokumentácii problém, ako nainštalovať or-tools do virtuálneho prostredia.
Jediný príkaz zapísaný v dokumentoch make python nainštaluje balík globálne do systému (prekvapujúce, však?).
Mne sa však podarilo: počas inžinierskeho hľadania metódou nekonečných opíc som náhodou zadal príkaz make help a dostal som zoznam všetkých možných zostavení or-tools, medzi ktorými bola aj možnosť zostaviť wheel balík. Je to príkaz make python_package, ak by to niekoho zaujímalo (mám ho na mysli ešte raz na konci). Takže, je čas zostaviť a spustiť?

Hľadáme problém
Nič nefunguje v etape zostavovania or-tools, sťažuje si na zlé knižnice GLPK.

Zostavenie so SCIP s parametrami z dokumentácie prebieha úspešne, ale or-tools sa aj tak odmieta spustiť pri importovaní.

Samostatne som nenašiel riešenie týchto problémov, tak som sa vybral na GitHub za vývojármi, aby som sa opýtal, prečo inštalácia podľa ich pokynov vyvoláva chyby niekde vo vnútri ich kódu.

Hmmm, ďakujem za vysvetlenia
Kým som čakal na odpoveď na GitHube, prehľadával som internet, v nádeji, že nájdem niečo, čo mi pomôže. A ako to nie je prekvapujúce, našiel som to. Bol to teamlead projektu, kde písal o tom, ako prepojiť GLPK s or-tools. A tento spôsob konečne zafungoval! Teraz, ak sa všetko zostaví bez SCIP, ale s GLPK, dá sa s tým aj pracovať. Už pokrok.
Avšak teamlead tímu or-tools neodporúčal používať GLPK, hovoril, že výsledky sú priam zlé a je potrebné poraziť SCIP a donútiť ho, aby fungoval. Susedný blog ma naviedol na myšlienku, že googlovský balík funguje s konkrétnymi verziami. Pozrieme sa na a vidíme tam jasné uvedenie verzie 6.0.0. Napriek tomu, že v makefile je uvedená verzia 6.0.2, skúšame nainštalovať staršiu verziu a voila!
A teraz ešte raz pracovný postup.
Postup inštalácie
- Stiahnuť archív SCIP, a uistiť sa, že je jasne uvedená podpora verzie, ktorú sťahujete (v mojom prípade ) a rozbaliť.
- Stiahnuť GLPK (v čase písania posledná verzia 4.65) a rozbaliť.
- Nainštalovať SCIP príkazom
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0 - Nainštalovať GLPK príkazom:
./configure --prefix= --with-pic --enable-shared make make install - Stiahnuť OR-Tools z GitHubu
git clone https://github.com/google/or-tools - Nainštalovať OR-Tools príkazmi:
make third_party make python_packageAk posledný príkaz nefunguje, nainštalujte wheel príkazom:
pip install wheel - Aktivujte virtuálne prostredie, prejdite do priečinka s Python balíkom a nainštalujte ho odtiaľ.
Ak potrebujete nainštalovať nie do virtuálneho prostredia, ale globálne pre celý systém, namiesto:
make python_packagevykonajte príkaz:
make python
Zdroj: habr.com
