如果我想构建独立程序而不是包,我是否需要__init__.py?

时间:2015-02-19 17:53:32

标签: python software-distribution

我正在开发一个独立的Python-GUI程序。我跑的时候

python3 setup.py sdist

我收到以下警告:

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

此警告仅适用于软件包,还是独立的Python程序还应该__init__.py而不是main-window.pymy-first-program.py

我应该将我的主文件重命名(在我的情况下ìbk-st.py改为__init__.py)还是保留__init__.py中的某个结构是好的(即创建一个单独的文件来调用ibk-st.py文件)

项目链接:

1 个答案:

答案 0 :(得分:2)

您应该将ibk-st重命名为python的有效包标识符(可能是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命令将安装在{{1}文件夹(无论是virtualenv的bin还是系统bin),都可以运行UI。