2017-02-16 2 views
2

ich eine einfache Anwendung haben (nur eine Py-Datei), dass cherrypy & flaschen geruhsamen wird über einen Web-Service zu präsentieren. Meine Entwicklungsumgebung ist Windows. Ich benutze Python 3.5.2 und erstelle und benutze virtualenv, um an meinem Projekt zu arbeiten.Wie ein rpm für Python-Anwendung erstellen

Ich muss diese auf Linux-Systemen bereitstellen. Ich wurde gebeten, dafür ein "RPM" zu erstellen, damit es auf Linux-Rechnern installiert und ausgeführt werden kann.

Ich habe gegoogelt und mehrere Stücke von Dokumentation lesen:

Aber ich bin sehr unklar über die Schritte, die dies auf einem getan werden muss, um implementieren Linux-System. Vielen Dank im Voraus für Ihre Hilfe.

+0

Nicht alle Linux-Systeme verwenden RPM. Was ist los mit nur einer 'requirements.txt' Datei? –

+0

Ich brauche ein RPM für CentOS – Sam

Antwort

2

Dies ist eine Mini-Demo Struktur Ausgabe von tree Befehl sind color_print die Paketnamen und Verzeichnis

. 
├── color_print 
│   ├── color_print.py 
│   └── __init__.py 
├── __init__.py 
└── setup.py 

Hier ist ein Beispiel setup.py für Demo

from setuptools import setup 

setup(name='color_print', 
    version='0.1', 
    description='Color String', 
    url='http://github/xxxx/color_print/', 
    author='Joe Bob', 
    author_email='[email protected]', 
    license='MIT', 
    packages=['color_print'], 
    zip_safe=False) 

Es besteht keine Notwendigkeit Verzeichnis zu ändern ist , führen Sie diesen Befehl ein rpms

python setup.py bdist_rpm 
zu bauen

Hier ist der Ausgang ist, ist es so einfach:

-bash-4.1$ find . -name "*.spec" 
./build/bdist.linux-x86_64/rpm/SPECS/color_print.spec 
-bash-4.1$ find . -name "*.rpm" 
./dist/color_print-0.1-1.noarch.rpm 
./dist/color_print-0.1-1.src.rpm 

In Wirklichkeit werden Sie auf jeden Fall die spec-Dateien manuell ändern müssen. und run

rpmbuild -ba ./build/bdist.linux-x86_64/rpm/SPECS/color_print.spec 
+0

Danke! Bevor ich die oben sehr klar beschriebenen Schritte ausprobiere, habe ich noch eine Frage. Würde eine RPM auf diese Weise machen, auch die korrekte Version von Python in den Zielsystemen installieren? Ich brauche es so ... denn ich kann Python 3.5.2 nicht auf CentOS-Zielsystemen installieren. Es ist möglich, dass es eine ältere Version von Python hat ... aber das ist nur ein Schmerz, da meine Anwendung die richtige Version von Python ausführen muss. – Sam

+0

@sam, tun 'cat/etc/redhat.release', um zu sehen, welche Version von Centos Sie verwenden, wenn es Version7 ist, haben Sie möglicherweise die Möglichkeit, von' sudo yum installieren -y python35u python35u-libs python35u-devel python35u-pip', müssen Sie Systemadministratoren für diese Option sprechen. Wenn nicht, sind Ihre Möglichkeiten begrenzt. – Gang

+0

@sam, Hier ist ein Kommentar zu Build-RPM von virtualenv 'https: // www.alexhudson.com/2013/05/24/packaging-a-virtualenv-wirklich-nicht-relocatable /', Die ganze Idee von virtualenv ist das Gegenteil von yum/rpm Paketsystem. Ist es möglich/einfach, Ihren Code auf Ihren Centos zu ändern? – Gang

Verwandte Themen