首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用and解析和setuptools创建CLI

使用and解析和setuptools创建CLI
EN

Stack Overflow用户
提问于 2018-11-09 14:35:45
回答 1查看 583关注 0票数 1

我有一个模块sfind.py。如何做到这一点,使我可以运行脚本的文件名,而没有py前缀?

代码语言:javascript
代码运行次数:0
运行
复制
 python sfind instead python sfind.py

sfind.py

代码语言:javascript
代码运行次数:0
运行
复制
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导入安装程序

代码语言:javascript
代码运行次数:0
运行
复制
setup(
    name='sfind',
    version='0.1',
    packages=['sfind'],
    entry_points={
    'console_scripts': [
        'sfind=sfind:__main__'
    ]
})

但发生了错误

代码语言:javascript
代码运行次数:0
运行
复制
python: can't open file 'sfind': [Errno 2] No such file or directory

有人能帮我把事情做好吗?

文件结构:

代码语言:javascript
代码运行次数:0
运行
复制
-sfind
  --__init__.py
  --__main__.py
  --sfind.py
  --test.py
EN

回答 1

Stack Overflow用户

发布于 2018-11-09 15:18:06

您不需要setuptools将模块称为python sfind。Setuptools将允许您只通过sfind调用。要使用python sfind调用它,您必须使您的sfind成为一个模块,您可以通过在目录中创建一个包含__init__.py__main__.pysfind.py的python目录sfind来实现这一点。然后,您可以只使用python sfind调用。如果您只想用sfind调用它,可以使用安装工具,但建议您提供可调用的函数(例如sfind=sfind.sfind:main),而不是以模块本身(__main__)作为entry_points。然后,您可以执行python setup.py installpython setup.py sdist,然后执行pip install

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53227755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档