python 自定义命令(entry_points)以及开发第三方库setuptools打包

突然想知道类似django-admin、you-get这种不用Python执行的自定义命令怎么实现的的,查了一下setuptools打包时配置一下entry_points可以实现。

工程结构

python 自定义命令(entry_points)以及开发第三方库setuptools打包_第1张图片

setup.py代码:

#setup.py

from setuptools import setup


setup(
    name = "setuptoolsdemo",
    version = "1.0.0",
    author = "wangjinyur",
    author_email = "[email protected]",
    description = ("An demonstration of setuptools-demo."),
    url = "http://www.baidu.com",
    packages=['src'],
    entry_points={
        'console_scripts': ['setup-func=src.appdemo:hello_setuptools'],
    }
)

setup-func就是我配置的自定义命令,打包完成后直接在shell中执行 setup-func,就相当于执行appdemo模块下的hello_setuptoolsh函数。

appdemo.py代码:

def hello_setuptools():
    print('hello_setuptools')

 

执行下面命令: 

python setup.py bdist_wheel 

生成一堆文件:

python 自定义命令(entry_points)以及开发第三方库setuptools打包_第2张图片

 

 再执行:

pip install dist/setuptoolsdemo-1.0.0-py3-none-any.whl

将自定义的setuptoolsdemo包安装到Python环境中

ipython中导入执行一下,注意导入的是src,而不是包名setuptoolsdemo

In[2]: from src.appdemo import hello_setuptools
In[3]: hello_setuptools()
hello_setuptools 

shell中执行一下setup-func命令:

(python3.7.3) ➜  setup-func
hello_setuptools 

可以看到成功打印出了 hello_setuptools。

参考:https://juejin.im/post/5d46eb4bf265da03ef79f7e3

官方文档太长了吧。。。

你可能感兴趣的:(python 自定义命令(entry_points)以及开发第三方库setuptools打包)