將應用打包需要安裝: setuptools
安裝和卸載應用需要安裝: pip
舉例polls是一個應用包。 polls文件夾中包含所有有關應用的文件。
打包應用:
-
首先,在你的Django項目之外,為polls創建一個父目錄。稱這個目錄為django-polls。
為你的應用選擇一個名字
當為你的包選擇一個名字時,檢查一下PyPI中的資源以避免與已經存在的包有名字沖突。當創建一個要發布的包時,在你的模塊名字前面加上django-通常很有用。 這有助於其他正在查找Django應用的人區分你的應用是專門用於Django的。
應用的標簽(應用的包的點分路徑的最后部分)在INSTALLED_APPS中必須唯一。避免使用與Django的contrib 包 中任何一個使用相同的標簽,例如auth、admin和messages。
-
將polls 目錄移動到django-polls目錄。
-
創建一個包含一些內容的文件django-polls/README.rst:
django-polls/README.rst===== Polls ===== Polls is a simple Django app to conduct Web-based polls. For each question, visitors can choose between a fixed number of answers. Detailed documentation is in the "docs" directory. Quick start ----------- 1. Add "polls" to your INSTALLED_APPS setting like this:: INSTALLED_APPS = ( ... 'polls', ) 2. Include the polls URLconf in your project urls.py like this:: url(r'^polls/', include('polls.urls')), 3. Run `python manage.py migrate` to create the polls models. 4. Start the development server and visit http://127.0.0.1:8000/admin/ to create a poll (you'll need the Admin app enabled). 5. Visit http://127.0.0.1:8000/polls/ to participate in the poll.
-
創建一個django-polls/LICENSE文件。選擇License超出本教程的范圍,但值得一說的是公開發布的代碼如果沒有License是毫無用處的。Django和許多與Django兼容的應用以BSD License 發布;然而,你可以隨便挑選自己的License。只需要知道你的License的選擇將影響誰能夠使用你的代碼。
-
下一步我們將創建一個setup.py 文件,它提供如何構建和安裝該應用的詳細信息。該文件完整的解釋超出本教程的范圍,setuptools 文檔 有很好的解釋。創建一個文件django-polls/setup.py,其內容如下:
django-polls/setup.pyimport os from setuptools import setup with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme: README = readme.read() # allow setup.py to be run from any path os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) setup( name='django-polls', version='0.1', packages=['polls'], include_package_data=True, license='BSD License', # example license description='A simple Django app to conduct Web-based polls.', long_description=README, url='http://www.example.com/', author='Your Name', author_email='yourname@example.com', classifiers=[ 'Environment :: Web Environment', 'Framework :: Django', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', # example license 'Operating System :: OS Independent', 'Programming Language :: Python', # Replace these appropriately if you are stuck on Python 2. 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', ], )
-
默認只有Python模塊和包會包含進包中。如果需要包含額外的文件,我們需要創建一個MANIFEST.in文件。上一步提到的setuptools 文檔對這個文件有更詳細的討論。如果要包含模板、README.rst和我們的LICENSE 文件,創建一個文件django-polls/MANIFEST.in,其內容如下:
django-polls/MANIFEST.ininclude LICENSE include README.rst recursive-include polls/static * recursive-include polls/templates *
-
將詳細的文檔包含進你的應用中,它是可選的,但建議你這樣做。創建一個空的目錄django-polls/docs用於將來存放文檔。向django-polls/MANIFEST.in添加另外一行:
recursive-include docs *
注意docs不會包含進你的包中除非你添加一些文件到它下面。許多Django應用還通過類似readthedocs.org這樣的站點提供它們的在線文檔.
-
試着通過python setup.py sdist 構建你的包(從django-polls的內部運行)。這會創建一個dist目錄並構建一個新包:django-polls-0.1.tar.gz。
更多關於打包的信息,參見Python 的 打包和分發項目的教程。
安裝和卸載自己的包:
因為,我們將polls 目錄移到項目的目錄之外,它不再工作了。我們將通過安裝我們的新的django-polls包來修復它。
安裝成某個用戶的庫
以下的步驟將安裝django-polls 成某個用戶的庫。用戶級別的安裝比系統級別的安裝有許多優點,例如將包運行在普通用戶級別上不但不會影響系統服務還不會影響其他用戶
注意根據用戶的安裝仍然可以影響以該用戶身份運行的系統工具,所以virtualenv 是更健壯的解決辦法(見下文)。
-
安裝這個包,使用pip(你已經安裝好它了,對吧?):
pip install --user django-polls/dist/django-polls-0.1.tar.gz
-
幸運的話,你的Django 項目現在應該又能正常工作了。請重新運行服務器以證實這點。
-
若要卸載這個包,使用pip:
pip uninstall django-polls