Skocz do zawartości

Paczka Rpm Z Plikami .py


InIrudeBwoy

Rekomendowane odpowiedzi

Czołem,

 

Próbuję spaczkować program napisany w całości w pythonie. Czytam różne poradniki: oficjalne i nieoficjalne, przeglądam pliki .spec innych paczek.

Nasunęło mi się pytanie:

 

Po co w pliku .spec jest sekcja:

%build

make

Tudzież jakiś configure?

 

Czyż instalacja nie wymaga po prostu skopiowania istniej,ących plików .py? :huh:

Programy pythona nie są kompilowane więc w jakim celu to tam jest? Jeśli ktoś miał doczynienia z budowaniem paczek rpm dla prograów czysto w pythonie napisanych niech mnie oświeci. Jeśli ktoś wie co jest czysto pythonowe, ponieważ to co przeglądam może nie być i stąd ta sekcja, niech powie gdzie powinienem zajrzeć.

I jeśli ktoś ma ciekawe artykuły na temat paczek rpm to proszę o linki bo może którą przeoczyłem. :lammer:

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Akurat robię to samo co Ty:), muszę zrobić dla Ubuntu i Fedory, ale zacząłem od Ubuntu, Najpierw chyba lepiej stworzyć setup.py z pliku spec trzeba będzie chyba wyciąć te sekcje, przynajmniej deb można z niego wygenerować i rpm podobno też zaimportuje

Odnośnik do komentarza
Udostępnij na innych stronach

Odnośnik do komentarza
Udostępnij na innych stronach

JEśli masz na myśli stworzenie pliku setup.py który skopiuje pliki gdzie trzeba to jest to banał ale to ma sie nijak do tworzenia paczki rpm lub deb (o tym pomyślę później).

Rozwiń myśl proszę;)

 

Grubo się mylisz,

python setup.py bdist_rpm

i utworzy Ci od razu plik .spec z automatu

Da się ? :P

 

Jak to taki banał to powiedz mi czemu do egga nie mogę dodać podkatalogów próbowałem różnych opcji package_include itp

 

Odnośnik do komentarza
Udostępnij na innych stronach

Mając na myśli setup myślałem o pliku który po prostu skopiuje odpowiedni pliki do odpowiednich miejsc. To nie jest trudne. Można użyć os.popen i działa.

Ale widzę, że masz na myśli coś takiego http://docs.python.org/distutils/setupscript.html

Zabieram się za czytanie.

Odnośnik do komentarza
Udostępnij na innych stronach

No jest, sobie zmontowałem już, nie wiem czy działa :) boję się instalować u siebie żeby sobie bazy rpm nie rozpierdzielić. Muszę postawić maszynę wirtualną i tam potestować.

Natomiast jesli chodzi o dodawanie podkatalogów to tez nie wygląda to zbyt trudno.

Najpierw dajesz package_dir = {'foo': 'lib'}

Co ustawia katalog domowy paczki foo jako lib. A potem jedziesz packages = ['foo', 'foo.bar']

Co poszuka lib/__init__.py oraz lib/bar/__init__.py i dołoży pliki.

 

Przynajmniej ja tak to rozumiem. Nie testowałem jeszcze.

Nie okdrywam tutaj Ameryki bo to już jest w manualu.

 

EDIT:

Potestowałem i mogę napisać jak dorzucić podkatalogi.

Dla moich potrzeb zrobiłem katalog

project/
      setup.py
      main/
              file1.py
              file2.py
              __init__.py
                      dir1/
                             file1.py
                             __init__.py
                      dir2/
                             file1.py
                             __init__.py

 

Teraz do setup należy dorzucić

packages=['main','main.dir1','main.dir2']

 

W moim przypadku pomin,ąłem pliki __init__.py w podkatalogach i setup.py i tak je zapakował, tutaj dodałem je dla świętego spokoju bo tak było w manualu.

po uruchomieniu

python setup.py sdist
python setup.py bdist_rpm

Powstają paczuszki z wszelkimi podkatalogami które wymienione są w setup.py.

Odnośnik do komentarza
Udostępnij na innych stronach

Robi się to jednak tak:

data_files = []

for dirpath, dirnames, filenames in os.walk('nazwa_katalogu_z_paczka'):

data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]])

 

a później w liście setup:

data_files=data_files,

 

dzięki za nakierowanie :)

Odnośnik do komentarza
Udostępnij na innych stronach

Hmmm, nie wiedziałem że chcesz dołożyć zwykłe pliki a nie .py.

W takim razie data_files jak najbardziej.

 

Dzięki za info bo własnie pracuję nad dorzuceniem plików konfiguracyjnych do paczki a one nie są .py

 

 

EDIT:

U mnie nie działa dodawanie plików innych niż .py.

Próbowałem Twoim sposobem i swoim i nic. MANIFEST jest tworzony tylko z plikami .py.

Do cholery nie wiem jak to ugryźć. Możesz opisać swój przypadek? Moze mnie to naprowadzi. Jakie pliki tam masz?

Ja oprócz plików .py mam parę zwykłych tekstowych które muszę poinstalować w odpowienich miejscach.

Odnośnik do komentarza
Udostępnij na innych stronach

Działa na 100% :)

wstawiłeś odpowiednią nazwę katalogu zamiast 'nazwa_katalogu_z_paczka' - w Twoim przypadku powinno to być 'main'

albo wrzuć paczkę gdzieś to zerknę - może będzie szybciej sprawdzić, bo pewnie jakiś czeski błąd.

Odnośnik do komentarza
Udostępnij na innych stronach

#!/usr/bin/env python

from distutils.core import setup


setup(name='SynapticsConfig',
     version='0.1.4',
     description='Tool for configuring synaptics touchpads',
     long_description='Tool written in Qt for configuring synaptics touchpads on laptops. Allows for easy setting of basic options.',
     author='Michal Klich',
     author_email='[email protected]',
     url='http://www.michalklich.com/synaptics',
     download_url='http://mklich.hejnet.pl/synaptics',
     packages=['synapticsconfig'],
     package_dir={'synapticsconfig': 'synapticsconfig'},
     package_data={'synapticsconfig': ['pam.d/synapticsconfig']},
     license='GPLv2+',
     requires=['PyQt4(>=4.5)','Python(>=2.6)'],
     data_files=data_files
     )

 

Paczkuję swój program. Opiszę Ci strukturę katalogów.

 

SynapticsConfig
       setup.py
            /synapticsconfig
             jakieś pliki.py
                   /pam.d
                    synapticsconfig.file
                   /security
                    synaptics.file

 

Jest parę więcej podkatalogów. Mó setup.py chwyta tylko pliki .py z katalogu synapticsconfig a pomija wszystko co jest w podkatalogach. Wiem, że jest tam tylko podkatalog pam.d :)

Co robię źle?

Odnośnik do komentarza
Udostępnij na innych stronach

A już Ci mówię:

 

#!/usr/bin/env python

from distutils.core import setup

#tego zapomniałeś dodać - skądś te data_files musi brać, a to zwykła lista jest więc po co wskazywać pliki jak można sobie tą listę stworzyć .
data_files = []
for dirpath, dirnames, filenames in os.walk('synapticsconfig'):
data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]])



setup(name='SynapticsConfig',
     version='0.1.4',
     description='Tool for configuring synaptics touchpads',
     long_description='Tool written in Qt for configuring synaptics touchpads on laptops. Allows for easy setting of basic options.',
     author='Michal Klich',
     author_email='[email protected]',
     url='http://www.michalklich.com/synaptics',
     download_url='http://mklich.hejnet.pl/synaptics',
     packages=['synapticsconfig'],
     package_dir={'synapticsconfig': 'synapticsconfig'},
#      package_data={'synapticsconfig': ['pam.d/synapticsconfig']},
     license='GPLv2+',
     requires=['PyQt4(>=4.5)','Python(>=2.6)'],
     data_files=data_files
     )

 

package_data nie jest potrzebne przy tym sposobie.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...