如何確保setup.py
編譯項目PO文件並在創建sdist
時包含它們。這是一個Django應用程序和手工工藝生成MO文件是在應用程序的根目錄中運行以下命令:如何編譯Django應用程序的setup.py中的gettext轉換
django-admin compilemessages
(這意味着我們要一個級別比setup.py深)
我想避免每次手動編譯MO文件。我不想將它們存儲在存儲庫中。
如何確保setup.py
編譯項目PO文件並在創建sdist
時包含它們。這是一個Django應用程序和手工工藝生成MO文件是在應用程序的根目錄中運行以下命令:如何編譯Django應用程序的setup.py中的gettext轉換
django-admin compilemessages
(這意味着我們要一個級別比setup.py深)
我想避免每次手動編譯MO文件。我不想將它們存儲在存儲庫中。
from django.core.management.commands.compilemessages import compile_messages
,你在setup
方法運行之前setup
然後包括創建的文件用它在你的setup.py
腳本。
我簡單的解決方案(得到了Trac的一些想法):
#!/usr/bin/env python
from setuptools import setup, find_packages
from setuptools.command.install_lib import install_lib as _install_lib
from distutils.command.build import build as _build
from distutils.cmd import Command
class compile_translations(Command):
description = 'compile message catalogs to MO files via django compilemessages'
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
import os
import sys
from django.core.management.commands.compilemessages import \
compile_messages
curdir = os.getcwd()
os.chdir(os.path.realpath('app_name'))
compile_messages(stderr=sys.stderr)
os.chdir(curdir)
class build(_build):
sub_commands = [('compile_translations', None)] + _build.sub_commands
class install_lib(_install_lib):
def run(self):
self.run_command('compile_translations')
_install_lib.run(self)
setup(name='app',
packages=find_packages(),
include_package_data=True,
setup_requires=['django'],
...
cmdclass={'build': build, 'install_lib': install_lib,
'compile_translations': compile_translations}
)
這將幫助你編譯PO文件,當您建立卵子或安裝包。
看起來很酷。我稍後再試一試。謝謝。 – muhuk 2013-03-21 05:10:30
這很好,但是當django沒有安裝時調用'python setup.py install'失敗(安裝程序試圖在安裝django之前運行安裝命令) – 2014-04-06 13:28:17
我添加了setup_requires = ['django']來解決這個問題,使用這個技巧在https://bitbucket.org/slav0nic/djangobb/src/de8e836662e8c5e3a294717c24238b20f3cced47/setup.py?at=default – slav0nic 2014-04-07 08:56:57
問題是關於自動執行這個任務 – 2014-04-06 13:09:11
安裝腳本是一個普通的'python'腳本,所以你可以使用裏面的'Django'代碼。考慮一下'setup.py'一個正常的程序,其目標是安裝你的軟件包,並且必須遵循各種步驟。其中一個是從'Django'調用'compile_messages'。這將使安裝包自動化的任務 - 在運行'setup.py'之前,您不需要調用'django-admin compilemessages'。 – gruszczy 2014-04-06 15:38:35