2008-11-02 9 views
68

Czy ktoś może wyjaśnić, w jaki sposób katalogi z informacjami o jajach są powiązane z odpowiednimi modułami? Na przykład, mam następujący:Pakiety w języku Python i katalogi informacji o jajach

/usr/local/lib/python2.5/site-packages/quodlibet/ 
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/ 

Jestem zakładając katalog jajko-info jest, aby odpowiedni moduł widoczne setuptools (easy_install), prawda? Jeśli tak, to w jaki sposób setuptools wiąże katalog jaja z katalogiem modułów?

Zakładając, że jestem na dobrej drodze i dla przykładu ... Gdybym chciał, aby istniejący pakiet był widoczny dla setuptools, mógłbym po prostu dowiązać symbol do katalogu modułów i katalogu informacji o jajach do katalogu site-packages? Po prostu sam bym to wypróbował, ale nie jestem pewien, jak przetestować, czy pakiet jest widoczny dla setuptools. Dodatkowe punkty, jeśli możesz mi również powiedzieć, jak to przetestować :)

Głównym powodem, dla którego staram się to wszystko zrozumieć, jest to, że chciałbym dowiązać niektóre moje moduły do ​​pakietów serwisowych, aby móc wprowadzić zmiany do nich i zmiany są widoczne dla skryptów, które ich używają, bez konieczności ponownej instalacji jajka z PyPI po każdej zmianie.

+0

Czy nadal masz wtyczkę quodlibet dla pytona wiszącego gdzieś? To brzmi naprawdę fajnie. –

+0

@PeterTurner To prawdopodobnie sam quodlibet - [jest napisany w Pythonie] (https://github.com/quodlibet/quodlibet) –

Odpowiedz

62

Katalogi .egg-info są tworzone tylko wtedy, gdy do zainstalowania jajka użyto opcji --single-wersja-zewnętrznie zarządzana. "Normalnie", zainstalowanie jaja utworzyłoby pojedynczy katalog (lub plik zip), zawierający zarówno kod, jak i metadane.

pkg_resources (która jest biblioteką odczytującą metadane) ma funkcję require, której można użyć do zażądania określonej wersji pakietu. W przypadku "starego stylu", regularnego importowania, easy_install włamuje się do pliku .pth, aby umieścić katalog jajek na sys.path. Dla - pojedynczej wersji - zarządzanej zewnętrznie, takie hakowanie nie jest konieczne, ponieważ zainstalowana będzie tylko jedna wersja (przez systemową infrastrukturę pakowania, np. Rpm lub dpkg). Informacja o jajku jest nadal dostępna dla aplikacji używających require (lub dowolnego innego mechanizmu wiążącego pkg_resources).

Jeśli chcesz zainstalować pakiet przez twarde linkowanie, polecam użyć "setup.py develop". Jest to polecenie z setuptools, które w rzeczywistości nie instaluje jajka, ale udostępnia je w całej witrynie. Aby to zrobić, tworzy plik z linkiem do jajek, tak aby pkg_resources mógł go znaleźć i manipulował plikiem .pth, aby mógł go znaleźć zwykły import.

+22

Aby odwrócić efekty działania 'setup.py develop', użyj' setup.py develop -u' – codewarrior

Powiązane problemy