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

标签 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 文件)

项目链接:

最佳答案

您应该将 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 将安装在 bin 文件夹中(无论是 virtualenv 的 bin 还是系统 /usr/local/bin ),可以运行 UI。

关于python - 如果我想构建一个独立的程序而不是一个包,我是否需要 __init__.py ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28613439/

相关文章:

python - 在点击中弃用参数别名的正确方法

python - 如果满足条件,则从列表列表中删除列表

ruby-on-rails - NoMethodError - #<ActionDispatch::Request::Session::Options:0x00007fe03ee04608> 的未定义方法 `key?':

C# 应用程序许可证组件和控件

python - 使用 Iris 数据集在 Python 中重现 LASSO/Logistic 回归结果

python - 使用python pymsql在mysql查询中出错

python - 是否可以将 MySQL Server 与独立的客户端软件一起安装?

python - 跨服务器分发代码的最佳方式是什么?

linux - 在 Linux 上构建可嵌入(最小)Python 发行版

python - 结合 shell 和 python 代码