如何使用python 命令行工具
本文的目的也是非常简单:
写一个Python命令行工具,并且发布到PIP上面.并且在这个过程中给出我自己的一些思考.
如何分解这个发布任务?
只需要进行如下的两个步骤便可以:
1.写好一个Python命令行工具.
2.发布它.
当然,这样不够细致.再细分一下.
1.写好一个Python命令行工具
1.1.命令行的特点,以及Python的如何编写命令行
1.2.如何组织代码结构.
2.发布
2.1.注册pypi账户
2.2.注册在账户下面注册Python包
2.3.上传打包好的Python命令行工具.
3.完善代码
1.写好一个Python命令行工具
写好一个命令行工具首先要知道命令行工具是什么?
在我看来,命令行工具就是一种完成某种类型的任务的终端程序.
也就是基本上没有什么用户界面的程序.
由于基本上没有什么用户界面,所以导致单个命令行的交互能力及其低下.但这种低下的交互性对于一些固定工作而言,简直就是最灵活的工具.只需要输入一些命令便可以完成某种类型的工作.实在是方便的很.
所以,某种程度上,终端程序低交互的缺点反而成了优点.
1.1.Python的如何编写一个简单的命令行
对于Python和命令行交互,我们很容易想出一个比较方便的方案.
sys.argv就是这样的嘛!
我们很容易这样写代码.
1
python testargv.py thisisaargv1
甚至我们也可以这样写命令行,
1
python testargv.py thisisaargv1 -d -f 0
那么,这样写的后果就是,不方便解析出(不是不能,是不方便) -d -f 0 以及 thisisaargv1.
不信的话,你解析一个下面场景的命令行试试,
1
2
3
4
# 用户可能这样输入
danmu.fm -q 1 -v 2
danmu.fm -q 1 -v 2
# 当然,肯定还有漏写啦,等等,你得需要转类型,增加各种blablabla的描述吧,添加默认的参数值吧.
于是Python就提供了一个非常好用的模块可以使用.叫做argparse.
上面的描述就变成了这个样子
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import argparse
APP_DESC="""
这就是描述
"""
print(APP_DESC)
if len(sys.argv) == 1:
sys.argv.append('--help')
parser = argparse.ArgumentParser()
parser.add_argument('-q','--quality',type=int,default=0,help="download video quality : 1 for the standard-definition; 3 for the super-definition")
parser.add_argument('-v','--verbose', default=0,help="print more debuging information")
parser.add_argument('-s','--store',help="保存流媒体文件到指定位置")
parser.add_argument('-c','--config',default=0,help="读取~/.danmu.fm配置,请~/.danmu.fm指定数据库")
parser.add_argument('url',metavar='URL',nargs='+', help="zhubo page URL (*/)")
args = parser.parse_args()
# 获取对应参数只需要args.quality,args.url之类.
url = (args.url)[0]
print(url)
#其他执行逻辑
保存为danmu.py
这样就可以执行命令
1
python danmu.py -q 1 -v 2
通过args就可以获取参数,然后进行终端程序的参数初始化.
可是这和我们的要求还是不同嘛,我们不想多写Python XXX,我们想直接XXX.就像这样.
1
danmu.fm -q 1 -v 2
不急,下面就是了.
1.2.如何组织代码结构.
于是,现在就要开始组织代码结构了.
我们在最终的代码目录大概是这样的.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
danmu.fm
├── README.md
├── danmufm
│ ├── __init__.py
│ ├── client
│ │ ├── __init__.py
│ │ ├── __init__.pyc
│ │ ├── douyu_client.py
│ │ └── douyu_danmu_client.py
│ ├── danmu.py
│ ├── misc
│ │ ├── __init__.py
│ │ ├── color_printer.py
│ │ ├── downloaders.py
│ │ └── player.py
│ └── model
│ ├── __init__.py
│ └── douyu_msg.py
├── docs
├── setup.cfg
├── setup.py
├── sh.py
└── tests
这就是我上次写的danmu.fm的代码目录.
聪明的你这时候你注意到了:
主要的程序不是放在根目录下面,而是放在第二目录danmufm下面.
2.setup.cfg 是什么鬼东西
3.setup.py 是什么鬼东西
对于上面几点,我们分别进行解释
1.2.1 为什么主要程序在第二目录下
为了把主要的程序分离出来,放在第二目录下面,这样的待会打包以后多出很多文件夹就不会对源码造成干扰.
当然,由于把程序放在了第二目录下面,所以,脚本里面的from import语句应该使用相对路径导入.
相对路径导入的的时候需要注意运行的时候使用如下命令
1
python3 -m danmufm.danmu [xxxx]
1.2.2 setup.cfg
填写如下内容即可.
1
2
[metadata]
description-file = README.md
然后去写Markdown的Readme就好了.
1.2.3 setup.py
这个是重头戏了.
setup这个py文件就是打包配置文件.对这个程序是谁的,有什么依赖,入口是什么,等等等等的配置.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#-*- encoding: UTF-8 -*-
from setuptools import setup, find_packages
"""
打包的用的setup必须引入,
"""
VERSION = '0.1.1'
setup(name='danmu.fm',
version=VERSION,
description="a tiny and smart cli player of douyutv,ximalayad,anmu based on Python",
long_description='just enjoy',
classifiers=[], # Get strings from ?%3Aaction=list_classifiers
keywords='python douyu danmu danmu.fm terminal',
author='twocucao',
author_email='twocucao@gmail.com',
url='',
license='MIT',
packages=find_packages(),
include_package_data=True,
zip_safe=True,
install_requires=[
'requests',
],
entry_points={
'console_scripts':[
'danmu.fm = danmufm.danmu:main'
]
},
)
官方有distutils这个包管理器工具,设置也非常的简单,只是,它不支持entry_points属性,由于无法使用entry_point,也就无法通过命令来跳转到指定模块运行程序,这也就意味着,官方工具不方便写成命令行.还是setuptools好.
上面需要注意的就是install_requires可以添加依赖.其他的你猜都可以猜出来是做什么的.自己去看代码,我就不多说了.
2.发布
所谓的发布,就是将打包好的程序的某个版本发布到某个仓库中.
2.1.注册pypi账户
到这个上面注册账号:
2.2.注册在账户下面注册Python包
进入对应项目根文件,然后执行
1
python3 setup.py register
这一步程序会让你输入刚刚注册的账号和密码,然后注册该包.注册该包以后,你就有了一个小仓库.可以存放不同版本的danmu.fm.
注册的仓库是可以在这个地址看到的,
2.3.上传打包好的Python命令行工具.
这里需要借助一个小工具,twine.twine是一个更加安全方便上传打包好的代码的工具.
1
pip3 install twine
接着开始打包,打包成两个版本,一个是不需要build的版本,另一个是需要build的版本(顺带吐槽下,这两个诡异的命名).
1
python setup.py sdist bdist_wheel
于是剩下来的就显而易见了,上传build完毕的程序到仓库中.
1
twine upload dist/danmu.fm-0.1.2*
于是,安装一下,测试是否成功
1
pip3 install danmu.fm --upgrade
命令行的工具是这样使用的.
1
danmu.fm -q 2 -v 1
3.完善
不断的完善代码,然后打包终端程序发布到仓库给别人用,这就是整个的PIP打包发布流程.
这个时候,你可能需要使用版本控制软件.
你可能需要增多的代码的测试.
1、确实python安装目录,把此目录添加到path中,使用如下命令:
path %path%;"python安装目录"
通常是在C盘根目录python版本号 目录下
2、定位到python脚本目录下,例如D盘的pythonscript目录中的test.py文件,则使用:
d:
cd d:\pythonscript
3、执行脚本,命令如下:
python test.py
或者不切换目录 直接执行
python d:\pythonscriptest.py
4、对于只安装一个版本python的系统,因为python有关联,所以直接运行脚本即可,如下:
d:\pythonscriptest.py
或者打开cmd输入python回车(需要将python添加到环境变量path中)
linux 在终端中输入python回车
python3.11这个版本怎么使用?
你可以直接在python官网中根据你自己使用的电脑系统差别,下载python3.11版本安装在自己的电脑上使用,python3的版本其实差别不大,可以通过阅读官方文档辨析各个版本的差别,在使用上不太需要关注小版本。
新手怎么学习python?
我们将学习的过程划分为4个阶段,每个阶段学习对应的内容,具体的学习顺序如下:Python学习顺序:①Python软件开发基础 掌握计算机的构成和工作原理 会使用Linux常用工具 熟练使用Docker的基本命令 建立Python开发环境,并使用print输出 使用Python完成字符串的各种操作 使用Python re模块进行程序设计 使用Python创建...
如何学习Python,以及新手如何入门
学习Python主要有自学和报班学习的方式,新手不建议自学,容易没有方向效率低下。python是一门语法优美的编程语言,不仅可以作为小工具使用提升我们日常工作效率,也可以单独作为一项高新就业技能!所以学完Python编程之后,只要真的掌握了相关技术,想要找到好的工作还是比较容易的。建议大家可以从以下三方面来...
电脑上安装python后怎么使用
windows系统打开命令提示符,Linux系统打开终端,输入Python即可进入Python交互环境。如果提示错误,就输入Python3,这是版本的问题。
在python中如何使用注释
python中的注释有多种,有单行注释,多行注释,批量注释,中文注释也是常用的。一、python单行注释符号(#):井号(#)常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释。print 1 #输出1,#号右边的内容在执行的时候是不会被输出的。二、批量、多行注释符号:在python中...
如何使用Python问题,怎么解决
为了正确处理多语言文本,Python在2.0版后引入了Unicode字符串。从那时起,Python语言中的字符串就分为两种:一种是2.0版之前就已经使用很久的传统Python字符串,一种则是新的Unicode字符串。在Python语言中,一般的解决办法是使用unicode()内建函数对一个传统Python字符串进行“解码”,得到一个Unicode...
Python能干什么,Python的应用领%
Python的诞生历史比Web还要早,由于Python是一种解释型的脚本语言,开发效率高,所以非常适合用来做Web开发。Python有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快。二、网络爬虫 网络爬虫是Python比较常用的一个场景,国际上google在早期大量地使用Python...
结合实际谈谈python在财务基础工作中的应用
2、以及使用NumPy库进行数值计算和统计分析。自动化报表生成:Python可以结合Excel或其他表格处理软件,实现财务报表的自动生成。通过编写Python脚本,可以定期从数据库中提取数据,然后根据预设的模板和格式生成报表,大大提高了工作效率。3、此外,还可以使用Python的图表库(如Matplotlib、Seaborn等)对数据进行...
python如何自学
学习python主要有自学和报班学习两种方式。具体学的顺序如下:①Python软件开发基础 掌握计算机的构成和工作原理 会使用Linux常用工具 熟练使用Docker的基本命令 建立Python开发环境,并使用print输出 使用Python完成字符串的各种操作 使用Python re模块进行程序设计 使用Python创建文件、访问、删除文件 掌握import ...
如何用 Python 从海量文本抽取主题
要从海量文本中提取主题,可以使用Python中的主题建模库,例如gensim和scikit-learn。以下是使用gensim库从海量文本中提取主题的基本步骤:1.准备数据:将文本数据转换为gensim期望的输入格式,即词袋(bag-of-words)表示法或TF-IDF(词频-逆文档频率)表示法。2.训练模型:使用gensim中的LDA(Latent ...
策趴乐朗: windows下打开IDLE (Python GUI)、 或者打开cmd输入python回车(需要将python添加到环境变量path中) linux 在终端中输入python回车
金平区18030197679: Python中调用命令行的几种方法 - ?
策趴乐朗: 1.直接用python f:/python/xxx.py这样来运行2.用开发工具,如楼上说的eclipse+pydev,还有editplus,VIM这些都可以设置的.
金平区18030197679: 如何在命令行里运行python脚本 - ?
策趴乐朗: 如果你的环境变量中有python,直接在cmd中输入python即可进入python的命令行运行,如果要运行脚本,直接在cmd中输入python ***.py;如果没有设置环境变量,那就先设置.
金平区18030197679: 怎么在命令提示符中运行python程序 - ?
策趴乐朗: 在命令提示符中运行python程序的方法是:1、右键点击【我的电脑】,依次点击【属性】、【高级系统设置】、【环境变量】;2、将python的安装路径添加到PATH变量中;3、打开命令提示符,执行【python 文件路径】命令即可.具体方法: (推荐教程:Python入门教程) 一、配置环境变量 1、右键点击我的电脑,依次点击属性、高级系统设置、高级、环境变量; 2、在系统变量中找到Path,双击进行添加,选择新建,输入python的安装路径,例如我的安装路径是C:Program FilesAnaconda3python 二、运行python程序 1、打开命令提示符2、执行命令“python python文件路径”即可
金平区18030197679: 如何运行Python程序的方法 - ?
策趴乐朗: 安装完python之后,我们可以做两件事情,1.将安装目录中的Doc目录下的python331.chm使用手册复制到桌面上,方便学习和查阅2.将Python安装路径我的是C:\Python33\加入到系统变量中按win+R打开启动窗口输入python回车 说明配置成功了.就可以正式开始python的编程之旅了,或者点开始按钮找到python菜单 点击Python(command line)命令行工具.防止双击py文件一闪而过的问题程序末尾加一行input()低版本raw.input()
金平区18030197679: python中,执行命令的方法有哪些? - ?
策趴乐朗: 1. os.system() 这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息. 2. os.popen() 这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回. 3. commands模块 ...
金平区18030197679: plotly python怎么用 - ?
策趴乐朗: python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写.python在生物信息、统计、网页制作、计算等多个领域都体现出了强大的功能.python和其他脚本语言如java、R、Perl 一样,都可以直接在命令行里运行脚本程序...
金平区18030197679: 如何运行python程序 - ?
策趴乐朗: 1. 使用Python自带的IDLE 在开始-->程序-->Python2.5(视你安装的版本而不同)中找到IDLE(Python GUI), 点击后弹出如下窗体: 在>>>提示符后输入代码,回车,就可以执行此代码. IDLE支持语法高亮,支持自动缩进,支持方法提示,不过...
金平区18030197679: 如何运行Python程序 - ?
策趴乐朗: 1. 使用Python自带的IDLE 在开始-->程序-->Python2.5(视你安装的版本而不同)中找到IDLE(Python GUI), 点击后弹出如下窗体: 在>>>提示符后输入代码,回车,就可以执行此代码. IDLE支持语法高亮,支持自动缩进,支持方法提示,不过...
金平区18030197679: 如何运行Python文件? - ?
策趴乐朗: 1. 使用Python自带的IDLE 在开始-->程序-->Python2.5(视你安装的版本而不同)中找到IDLE(Python GUI),2. 点击后弹出如下窗体:3. 在>>>提示符后输入代码,回车,就可以执行此代码.4. IDLE支持语法高亮,支持自动缩进,支持方法提示,...