Python编程:entry_points将Python模块转变为命令行工具

版权声明:本文为博主原创文章,欢迎转载,请注明出处 https://blog.csdn.net/mouday/article/details/90582313

要将python模块转变为命令行工具只用在 setup.py 文件中添加参数entry_points

例如:

entry_points={
    'console_scripts': [
        'pycase = pycase.case:main'
    ]
}

pycase 是自定义的参数,往后看

setup.py完整设置:

# -*- coding: utf-8 -*-

from setuptools import setup, find_packages

"""
打包的用的setup必须引入,
"""

VERSION = '0.0.1'

setup(name='pycase',
      version=VERSION,
      description="a command line tool for camel case",
      long_description='a python command tool for camel case',
      classifiers=[],  # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
      keywords='pycase',
      author='Peng Shiyu',
      author_email='pengshiyuyx@gmail.com',
      license='MIT',
      packages=find_packages(),
      include_package_data=True,
      zip_safe=True,
      install_requires=[],
      entry_points={
          'console_scripts': [
              'pycase = pycase.case:main'
          ]
      }
      )

举个例子

1、工具说明
我要做一个的简单的命令行工具,实现驼峰命名的大小写转换

2、项目目录

$ tree
.
├── pycase
│   ├── __init__.py
│   └── case.py
└── setup.py

文件说明:
setup.py 文件和上文中的一致
__init__.py 空白文件
case.py 文件中写逻辑代码,具体就不实现了,文末github有源代码

3、调用函数
现在,我要通过命令行调用case.py 文件中的函数

$ python pycase/case.py studeng_model
StudengModel

4、打包安装
这样显得名字太长了

基于前面配置好的 setup.py 将项目打包安装

python setup.py install

5、命令行工具

$ pycase studeng_model
StudengModel

所以,setup.py 中的参数

pycase = pycase.case:main

相当于
pycase == pycase/case.py.main

其中,main 是定义好的main() 方法

另外

之前见过下面这样的执行方式

$ python -m pycase student_model
StudentModel

其实就是在__init__.py 通目录下新建一个__main__.py文件即可,内容

# -*- coding: utf-8 -*-

from .case import main

if __name__ == '__main__':
    main()

现在的文件结构为:

$ tree
.
├── pycase
│   ├── __init__.py
│   ├── __main__.py
│   └── case.py
└── setup.py

项目源码:
https://github.com/mouday/PyCase

参考:
如何发布一个Python命令行工具

展开阅读全文

没有更多推荐了,返回首页