簡體   English   中英

使用 argparse 和 setuptools 制作 CLI

[英]Make CLI with argparse and setuptools

我有一個模塊 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。

設置文件

從 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__.pysfind.py在目錄中。 然后,您可以僅使用python sfind進行調用。 如果您只想使用sfind調用它,您可以使用設置工具,但建議您提供可調用函數(例如sfind=sfind.sfind:main )而不是模塊本身( __main__ )作為您的entry_points 然后,您可以執行python setup.py installpython setup.py sdist然后執行pip install

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM