Portál AbcLinuxu, 19. dubna 2024 23:32


Dotaz: Distribuce python modulů a submodulů

Bystroushaak avatar 14.11.2012 23:29 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Distribuce python modulů a submodulů
Přečteno: 182×
Odpovědět | Admin
Řeším takový problém spíše filosofického rázu. Napsal jsem pár modulů (S), které mám na githubu jako projekty. Na těchto modulech jsem nyní založil další moduly (M) a na těchto modulech budou založeny aplikace (A).

Mám tedy schéma:
    A
   / \
  M   M
 / \ / \
S   S   S
Distribuce S je jasná, prostě mají vlastní projekt na githubu, v něm vlastní dokumentaci a tak dále. U distribuce M můj problém začíná - měly by být distribuovány s S, nebo bez nich? A co A?

Má na tohle python nějaký postup? Zatím jsem to řešil takto:
try:
	import socks
except ImportError, e:
	sys.stderr.write("I do require sock module. You can get it from\n")
	sys.stderr.write("http://socksipy.sourceforge.net/\n")
	raise e
V jednom speciálním případě takto:
try:
	from timeout import timeout
except ImportError, e:
	import base64, zlib

	f = open("timeout.py", "w")
	f.write(zlib.decompress(base64.b64decode("""eJx9UsFOhDAQvfcrxnCBzbKYPRmMBw/G
mOhFvW8qtNCktKSdbuTvLUvZUDDby3Rm3kzfe5DcFc6a4keogqkz9AO2WpEE8l0Ola6FakpwyPOHsUIS
36kMqwU+QovYl0XRN07UzB4Uw2KaztGhNoLKay46ph3mNOdOVSi0Kojoem0Q7GCvV9EoKgmQSlJr4Xsa
evmtWD+OpNdbVgIBf/oR5vE14xCeSEM8jXEPvkOdxKy84Be400wk5aE5A/gx3VHT2EV5PdtSVUtm0pGw
6/bADe3YCj8eQ4VlWx0ZgQiqZT2vhKfgwmEKaci+3l6f3z8/9msKWbwpoKmkpoucyCABNKLxL1yaIBQs
+2BZpVVto21ohhK2ohieqfREefApQrCLyo3mf7xh6IyaP1DU5sKLkMN25rY1Cxtv2XIfEw48JlVkVeVH
ssjWv84fYU34lA==""")))
	f.close()

	try:
		from timeout import timeout
	except ImportError, e:
		sys.stderr.write("Lol, you are fucked. Read only medium? SRSLY?\n")
		raise e
Očividné řešení by bylo tam moduly prostě nakopírovat a distribuovat to i s nimi, jenže tím se připravím o updaty a bugfixy. Package v distribuci z nich dělat nehodlám, protože pochybuji, že je používá i někdo jiný než já, navíc by mě to omezilo na jeden jediný OS a prostě se mi to zdá jako zbytečně komplikované řešení.

Jak podobné problémy řešíte vy?

<naivní otázka>Neexistuje cosi jako online úložiště balíčků, kam bych specifikoval co se má stáhnout a ono to stáhne a do systému doinstaluje? Nějaký způsob loadování a cacheování modulů z netu?</naivní otázka>
blog.rfox.eu

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.11.2012 01:10 chrono
Rozbalit Rozbalit vše Re: Distribuce python modulů a submodulů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ak M/A bude potrebovať nejakú špeciálnu verziu S/M, tak bude asi najrozumnejšie použiť submoduly v git (alebo niečo podobné).

Inak sa dá použiť setuptools alebo pip v kombinácii so stránkou PyPI, prípadne s vlastnou stránkou. Ak je potom balíček na stránke PyPI, stačí pri jeho inštalovaní poznať názov. Ak je niekde inde, dá sa napr. použiť odkaz na súbor.

PS: Balíčky s python knižnicami, ktoré sa budú inštalovať pomocou setuptools alebo pip, obsahujú aj závislosti, ktoré sa potom tiež nainštalujú.
15.11.2012 01:13 chrono
Rozbalit Rozbalit vše Re: Distribuce python modulů a submodulů
A ešte som zabudol na to, že pip vie inštalovať priamo z git repozitára (a zdá sa mi, že aj k setuptools existuje taká možnosť).
Bystroushaak avatar 15.11.2012 08:55 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Distribuce python modulů a submodulů
pip znám, jenže to nefunguje tak úplně jak bych chtěl a je to jen o krok lepší než říct uživateli "tohle si (nějak) nainstaluj", protože mu říkáš "tohle nainstaluj takhle". Lepší by pro mě byl nějaký automatický způsob.
15.11.2012 10:04 chrono
Rozbalit Rozbalit vše Re: Distribuce python modulů a submodulů
Nič viac automatické asi neexistuje, pretože napr. kam by sa to malo inštalovať?

Aplikácie, ktoré používam to zvyčajne riešia tak, že:
  • je uvedený iba zoznam závislostí
  • je uvedený zoznam závislostí aj s popisom, ako ich nainštalovať (napr. pomocou pip)
  • aplikácia obsahuje súbor, v ktorom sú vypísané všetky závislosti (a ten súbor sa potom použije spolu s pip, aby sa to všetko nainštalovalo)
Každopádne aktualizácie modulov sa zvyčajne nijako neriešia a vyžadujú zásah používateľa, takže nevidím veľký problém v tom, aby používateľ nainštaloval moduly pri inštalovaní aplikácie (prípadne môže celú aplikáciu nainštalovať pomocou pip).

A ak to naozaj musí byť automatické, tak je asi najjednoduchšie pridať všetky moduly priamo k aplikácii. Síce sa tým príde o samostatné aktualizácie modulov, ale ak sa tie moduly neaktualizujú automaticky, používateľ to aj tak pravdepodobne robiť nebude. :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.