2015-02-19 3 views
1

Я работаю над автономной программой Python-GUI. Когда я бегуНужен ли мне __init__.py, если я хочу создать отдельную программу, а не пакет?

python3 setup.py sdist 

Я получаю следующее предупреждение:

package init file 'main-application-folder/__init__.py' not found (or not a regular file) 

Это предупреждение предназначено только для пакетов или должен программа автономный Python также есть __init__.py вместо чего-то вроде main-window.py или my-first-program.py?

Должен ли я переименовать мой основной файл (в моем случае ìbk-st.py к __init__.py) или было бы хорошо, чтобы сохранить определенную структуру в __init__.py (то есть сделать отдельный файл, который вызывает файл ibk-st.py)

Ссылка на проект :

+1

Непонятно, какое различие вы рисуете между * «пакетами» * и «автономной программой Python» * - пакеты обычно * являются автономными программами. У вас есть многочисленные файлы '.py', сгруппированные вместе в каталоге, поэтому да, вы должны написать' __init __. Py', чтобы указать, что должно публично публиковаться из них. – jonrsharpe

+0

Этот ответ может помочь вам: http://stackoverflow.com/questions/28444747/whats-the-minimal-directory-structure-to-make-setuptools-work-with-one-file-py/28573255#28573255 – Iguananaut

+0

@ jonrsharpe: Извините, что меня так легко путают, но означает ли это, что я должен переименовать свой ibk-st.py в '__init __. py' или есть определенные спецификации, которые должен выполнять' __init __. py'? – tobias47n9e

ответ

2

Вы должны переименовать ibk-st в действительный идентификатор пакета для pytho n (ibk_st возможно); затем ibk-st.py во что-то вроде main_ui.py; затем введите __init__.py для всего пакета (в качестве альтернативы вы можете переименовать ibk-st.py в __init__.py).

Примечание: setup.py can install command line scripts; Вы можете обеспечить тонкую оболочку в виде файла bin/ibk-st-ui с содержанием

#!/usr/bin/env python 

from ibk_st.main_ui import main 
main() 

Установка модуля гарантирует, что скрипт исполняемый на любую платформу пользователь использует.

Тогда в вашем setup.py вы должны иметь

... 
packages = [ 'ibk_st' ], 
scripts=[ 'bin/ibk-st-ui' ], 
... 

Теперь, когда вы запустите setup.py install или установить пакет, модули могут быть встроены в другие программы и командной ibk-st-ui будет установлен в с bin (будь то bin виртуального или системы /usr/local/bin), который может запускать пользовательский интерфейс.

+0

Спасибо, что это очень полезно. Я опишу эти детали и буду строить свою структуру проекта! – tobias47n9e