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

如何使用setuptools生成一个控制台脚本入口点,该入口点调用“python-mypackage”?,python,deployment,setuptools,pep,Python,Deployment,Setuptools,Pep,我正在努力成为一名优秀的Pythonista,并遵循我计划部署的软件包 我还试图使用setuptoolsentry\u points{'console\u scripts':…}选项在安装python setuptools时生成可执行脚本 我如何使用入口点生成一个调用python-mypackage(并传递*args、**kwargs)的二进制文件 以下是我的几次尝试,但都没有成功: setuptools( ... (一) (二) (三) 我一直在使用的主要资源: 如何使用入口点生

我正在努力成为一名优秀的Pythonista,并遵循我计划部署的软件包

我还试图使用setuptools
entry\u points{'console\u scripts':…}
选项在安装python setuptools时生成可执行脚本

我如何使用入口点生成一个调用
python-mypackage
(并传递*args、**kwargs)的二进制文件

以下是我的几次尝试,但都没有成功:

setuptools(
...
(一)

(二)

(三)

我一直在使用的主要资源:

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

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

考虑这个简单的例子:

script_proj/
├── script_proj
│   ├── __init__.py
│   └── __main__.py
└── setup.py
以及极简主义setup.py:

from setuptools import setup

setup(
    name="script_proj",
    packages=["script_proj"],
    entry_points = {
        "console_scripts": [
            "myscript = script_proj.__main__:main",
        ]
    }
)
\uuuu main\uuuu.py
是一个虚拟模块,包含
main
方法

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

if __name__ == "__main__":
    main()
安装之后,您就有了可执行的
myscript
,它在
\uuuuu main\uuuuuuuuuuuuy.py
中调用
main
方法。
在这个包设计中,
python-mscript\u proj
也会调用相同的
main
方法。

这对我很有效,但是在调用
myscript
时,我的main()函数会被调用两次。我的主函数只包含一个
print(“Success!”)
语句,我得到了两次输出output@rm-嗯,这对我来说似乎很管用
myscript
只打印一个
helloworld。。。hmm@rm-rf,你是否使用了
来确保只有当
\uuuuuu main\uuuuuupy
作为脚本而不是模块调用时,才会调用main!只需要在main.py中输入if
\uuuuu name\uuuuuu==“\uuuuuuu main\uuuuuu”
。愚蠢的错误。非常感谢。
def main():
    print("Hello world!")

if __name__ == "__main__":
    main()
from setuptools import setup

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

if __name__ == "__main__":
    main()