Python中如何实现pypi安装后在$PATH目录下增加可执行文件?
像 you-get 一样
$ pip3 install you-get
$ which you-get
/usr/local/bin/you-get
$ cat /usr/local/bin/you-get
#!/usr/local/opt/python/bin/python3.7
-- coding: utf-8 --
import re
import sys
from you_get.main import main
if name == ‘main’:
sys.argv[0] = re.sub(r’(-script.pyw?|.exe)?$’, ‘’, sys.argv[0])
sys.exit(main())
查看了源码和 setup.py ,并没有看出什么端倪。
Python中如何实现pypi安装后在$PATH目录下增加可执行文件?
8 回复
django-admin 同理
在 setup.py 里用 entry_points 就行。比如你的包叫 mytool,主程序在 mytool/cli.py 里,函数叫 main,就这么写:
from setuptools import setup, find_packages
setup(
name="mytool",
version="0.1",
packages=find_packages(),
entry_points={
'console_scripts': [
'mytool=mytool.cli:main',
],
},
)
用户 pip install 之后,系统就会在 PATH 里生成一个叫 mytool 的脚本,直接执行 mytool 命令就会调用 mytool.cli.main() 函数。
如果用的是 pyproject.toml(现在更推荐这个),写法也差不多:
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "mytool"
version = "0.1"
[project.scripts]
mytool = "mytool.cli:main"
核心就这点东西,entry_points 或者 project.scripts 配好就行。
我发布了一个 pypi,叫作 ghtrending,每次都要 python3 -m ghtrending 很麻烦,想简化成 ghtrending
你看看 you-get 的 setup.py 怎么写的就行了
感谢,我试一下,因为没看到 setup 里面由路径相关的设置所以没意识到。
感谢,我试一下。


