我有一个模块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 install
或python setup.py sdist
然后执行pip install
。
关于python - 使用argparse和setuptools制作CLI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53227755/