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

Do I need an __init__.py if I want to build a standalone program and not a package?

我正在开发一个独立的 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 文件)

Link 到项目:

您应该将 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 with contents

#!/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 文件夹中(无论是 virtualenv 的 bin 还是系统 /usr/local/bin),可以 运行 UI.