2017-02-16 54 views
2

我有一個簡單的應用程序(只有一個.py文件),即使用cherrypy & flask-restful來呈現Web服務。我的開發環境是Windows。我使用Python 3.5.2,並創建並使用virtualenv來處理我的項目。如何爲python應用程序創建rpm

我需要在Linux系統上部署這個。我被要求爲此創建一個「RPM」,以便它可以在Linux機器上安裝和運行。

我用Google搜索和閱讀幾件文件:

但我對需要做對一個部署此步驟非常不清楚Linux系統。預先感謝您的幫助。

+0

並非所有的linux系統都使用RPM。只有'requirements.txt'文件有什麼問題? –

+0

我需要CentOS的RPM – Sam

回答

2

這是通過tree命令迷你輸出演示結構,color_print是包名和目錄

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

下面是一個例子setup.py用於演示

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) 

沒有必要改變目錄,運行這一個命令來建立rpms

python setup.py bdist_rpm 

這裏是輸出,它是容易:

-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 

在現實中,你一定會需要手動修改的規範文件。並運行

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

謝謝!在我嘗試執行上面非常清晰概述的步驟之前,我還有一個問題。 以這種方式創建一個rpm,還要在目標系統中安裝正確版本的Python?我需要這種方式......因爲我沒有辦法在CentOS目標系統上安裝Python 3.5.2。它可能有一個老版本的Python ...但這只是一個痛苦,因爲我的應用程序需要選擇正確版本的python可執行文件。 – Sam

+0

@sam,執行'cat /etc/redhat.release'來查看你使用的是哪個版本的centos,如果是版本7,你可以用'sudo yum install -y python35u python35u-libs python35u-devel python35u-pip',你必須與系統管理員討論這個選項。如果沒有,您的選擇將受到限制。 – Gang

+0

@sam,下面是從virtualenv'https://www.alexhudson.com//2013/05/24/packaging-a-virtualenv-really-not-relocatable /'構建rpm的評論,virtualenv的整個想法是相反的yum/rpm包系統。在你的Centos上修改你的代碼是否可能/容易? – Gang