1. ruslan.popov@gmail.com

    24.01.2010

    0 ↑
    0 ↓

    Пытаюсь оформить своё приложение в виде пакета для Debian Lenny.

    Для этого сначала делаю python пакет с помощью distutils. Прочитал документацию к нему.

    Сделал MANIFEST.in:

    include README
    include LICENSE
    include AUTHORS
    include INSTALL
    recursive-include src/qtrmanager/locale *.mo
    recursive-include src/qtrmanager *.css
    

    Сделал python setup.py sdist. В пакет входит всё, что мне необходимо.

    Затем делаю тестовую установку - python setup.py install --prefix=/tmp

    running install
    running build
    running build_py
    creating build
    creating build/lib
    creating build/lib/qtrmanager
    copying src/qtrmanager/dlg_event_info.py -> build/lib/qtrmanager
    copying src/qtrmanager/dlg_event_assign.py -> build/lib/qtrmanager
    ..
    copying src/qtrmanager/dlg_waiting_rfid.py -> build/lib/qtrmanager
    creating build/lib/qtrmanager/locale
    error: can't copy 'src/qtrmanager/locale/ru': doesn't exist or not a regular file
    

    Файл в наличии, как видим:

    -rw-r--r-- 1 rad rad 8906 2010-01-13 10:07 locale/ru/LC_MESSAGES/project.mo
    

    Подскажите, что я упустил?

  2. Файл в наличии, как видим:

    Подождите. Видно что src/qtrmanager/locale/ru не файл а каталог, что соответствует сообщению:

    doesn't exist or not a regular file

    Поскольку манифест используется только для создания архива, то он тут не интересен, а интересно что у вас написано в setup.py. Вот его и покажите.

  3. ruslan.popov@gmail.com

    25.01.2010

    0 ↑
    0 ↓
    Вот мой setup.py:
    # -*- coding: utf-8 -*-

    from distutils.core import setup

    setup(name='pyqounter-manager',
    version='1.0.0',
    description='Accounting System / Manager',
    author='Ruslan Popov',
    author_email='ruslan.popov@gmail.com',
    maintainer='Ruslan Popov',
    maintainer_email='ruslan.popov@gmail.com',
    url='http://snegiri.dontexist.org/pyqounter',
    packages=['qtrmanager'],
    package_dir={'qtrmanager': 'src/qtrmanager'},
    package_data={'qtrmanager': ['locale/*', 'manager.css']}
    )
  4. ruslan.popov@gmail.com

    25.01.2010

    1 ↑
    0 ↓
    Осознал!
    Надо был писать:
    package_data={'qtrmanager': ['locale/ru/LC_MESSAGES/*mo', 'manager.css']}
  5. ruslan.popov@gmail.com

    25.01.2010

    0 ↑
    0 ↓

    Подскажите, пожалуйста, как надо описывать файл с ресурсами i18n (я про project.mo), чтобы он ставился в правильное место?

    Сейчас он ставится вместе с приложением в /lib/python2.5/site-packages/qtrmanager/locale/ru/LC_MESSAGES/. Я разрабатываю PyQt приложение и подключаю файл с переводами следующим кодом в начале каждого скрипта:

    import gettext
    gettext.bindtextdomain('project', './locale/')
    gettext.textdomain('project')
    _ = lambda a: unicode(gettext.gettext(a), 'utf8')
    

    Стандартные средства PyQt для организации перевода приложения я не смог заставить работать.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.