如何使用setuptools生成调用“python-mypackage”的控制台脚本入口点?

2024-04-29 16:26:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力成为一个优秀的Pythonista,并遵循我计划部署的包的PEP 338

我还尝试使用setuptoolsentry_points{'console_scripts': ... }选项在python setuptools install上生成可执行脚本。

如何使用入口点生成调用python -m mypackage(并传递*args,**kwargs)的二进制文件?

以下是一些我没有成功的尝试:

setuptools(
...

(一)

entry_points=
       {'console_scripts': ['mypkg=mypkg.__main__'],},

(二)

entry_points=
       {'console_scripts': ['mypkg=mypkg.main'],},

(三)

entry_points=
       {'console_scripts': ['mypkg=python -m mypkg'],},

我使用的主要资源:


Tags: orghttpmain部署htmlwwwscriptsblog
1条回答
网友
1楼 · 发布于 2024-04-29 16:26:33

How can I use entry_points to generate a binary that calls python -m mypackage (and passes *args, **kwargs) ?

我认为这样看问题是错误的。您不希望脚本调用python -m mypackage,但希望脚本具有与python -m mypackage相同的入口点

举个简单的例子:

script_proj/
├── script_proj
│   ├── __init__.py
│   └── __main__.py
└── setup.py

以及极简设置.py:

from setuptools import setup

setup(
    name="script_proj",
    packages=["script_proj"],
    entry_points = {
        "console_scripts": [
            "myscript = script_proj.__main__:main",
        ]
    }
)

__main__.py是一个伪模块,包含main方法。

def main():
    print("Hello world!")

if __name__ == "__main__":
    main()

安装后,您将拥有可执行文件myscript,它调用__main__.py中的main方法。 在这个包设计中,python -m script_proj也调用相同的main方法。

相关问题 更多 >