我有一个模块sfind.py。如何执行此操作,以便可以按不带py前缀的文件名运行脚本?

 python sfind instead python sfind.py


sfind.py

import argparse


def createParser():
    some logic
    return parser

def main(namespace):
    some logic


if __name__ == '__main__':
    parser = createParser()
    namespace = parser.parse_args()
    main(namespace)


我试图用setuptools来做,在同一目录下创建了新文件setup.py。

setup.py

从setuptools导入安装程序

setup(
    name='sfind',
    version='0.1',
    packages=['sfind'],
    entry_points={
    'console_scripts': [
        'sfind=sfind:__main__'
    ]
})


但是发生了错误

python: can't open file 'sfind': [Errno 2] No such file or directory


有人可以帮我做对吗?

文件结构:

-sfind
  --__init__.py
  --__main__.py
  --sfind.py
  --test.py

最佳答案

您不需要setuptools即可将模块称为python sfind。 Setuptools将允许您仅按sfind进行调用。要使用python sfind调用它,您必须将sfind设为一个模块,并且可以通过在目录中的sfind__init__.py__main__.py创建python目录sfind.py来实现。然后,您可以仅使用python sfind进行呼叫。如果只想使用sfind调用它,则可以使用设置工具,但是建议您提供可调用函数(例如sfind=sfind.sfind:main)而不是模块本身(__main__)作为您的entry_points。然后,您可以执行python setup.py installpython setup.py sdist然后执行pip install

关于python - 使用argparse和setuptools制作CLI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53227755/

10-12 19:32