Cómo publicar herramientas de línea de comandos de Python
Escribir una herramienta de línea de comandos de Python y publicarla en PIP. Y hable sobre algunos de mis propios pensamientos sobre este proceso.
¿Cómo desglosar las tareas de publicación?
Solo hay dos pasos:
1. Escribir una herramienta de línea de comandos de Python.
2. Publicarlo.
Por supuesto, esto no es lo suficientemente detallado. Analicémoslo un poco más.
1. Escribir herramientas de línea de comandos en Python
1.1 Características de la línea de comandos y cómo escribir líneas de comandos en Python
1.2.
2. Publicar
2.1. Registrar una cuenta pypi
2.2. Registrar el paquete Python en su cuenta
2.3. Paquete de herramientas de línea de comandos de Python.
3. Mejorar el código
1. Escribe una buena herramienta de línea de comandos en Python
Para escribir una buena herramienta de línea de comandos, primero debes saber qué es un comando. herramienta de línea es?
En mi opinión, una herramienta de línea de comandos es un programa terminal que realiza determinadas tareas.
En otras palabras, un programa que básicamente no tiene interfaz de usuario.
Dado que esencialmente no existe una interfaz de usuario, la interactividad de una sola línea de comando es muy baja. Sin embargo, este bajo nivel de interactividad la convierte en la herramienta más flexible para realizar tareas fijas. Simplemente escriba algunos comandos para realizar algún tipo de trabajo. Esto es muy conveniente.
Por lo tanto, hasta cierto punto, la desventaja de la baja interactividad de los programas de terminal también es una ventaja.
1.1. Cómo escribir una línea de comando simple en Python
En Python, es fácil encontrar una solución conveniente para la interacción de la línea de comando.
Sys.argv ¡Eso es!
Es fácil escribir código como este.
1
python testargv.py thisisaargv1
Incluso podemos escribir la línea de comando así:
1
python testargv.py thisisaargv1 -d -f 0
Por lo tanto, la consecuencia de esto es que no es fácil analizar argv.
Si no me cree, intente analizar las siguientes líneas de comando:
1
2
3
4
# El usuario puede escribir lo siguiente
danmu.fm -q 1 -v 2
danmu.fm -q 1 -v 2
# Por supuesto, definitivamente habrá omisiones, etc. Debe convertir tipos, agregar varias descripciones blablabla y agregar valores de parámetros predeterminados.
Por lo tanto, Python proporciona un módulo muy útil.
La descripción anterior se ve así
Python
1
2
3
4
5
6
7
8
9
10
11
Python tiene un módulo muy bueno que se puede usar para agregar valores predeterminados a los parámetros. Este módulo se llama argparse.
p>11
12
13
14
15
16
17
18
19
importar argparse
APP_DESC="""
Esta es la descripción
p>
"""
imprimir(APP_DESC)
si len(sys.argv) == 1:
sys.argv.append( '--help')
parser = argparse.ArgumentParser()
parser.add_argument('-c','--config',default= 0,help="read Para obtener la configuración ~/.danmu.fm, utilice la base de datos especificada por ~/.danmu.fm")
parser. add_argument('url',metavar='URL',nargs='+',help="URL de la página de zhubo (*/)")
args = parser.parse_args()
# Simplemente obtenga los parámetros correspondientes para args.quality, args.url, etc.
url = (args.url)[0]
print(url)
# Otra lógica de ejecución
Guardar como danmu. py
De esta manera puedes ejecutar el comando
1
python danmu.py -q 1 -v 2
Puedes pasar args Obtenga los parámetros y luego utilícelos para inicializar el programa de terminal.
Pero esto no es lo que queremos. No queremos escribir Python XXX, queremos escribir XXX.
1
danmu.fm -q 1 -v 2
No te preocupes, eso es todo.
1.2. Cómo organizar la estructura del código.
Ahora es el momento de organizar tu código.
Nuestro directorio de código final se ve así.
1
2
3
4
5
6 p>
6
p>
7
8
9
10
11
12
13
14
15.
16
17
18
19
20
21
22
23 p>
danmu.fm
├── README.md
├── danmufm
│ ├── __init__.py
│ ├─ cliente
│ ├─ __init__.py
│ ├── __init__.pyc
│ ├── douyu_client.py p>
│ │ └── douyu_danmu_ client.py
│ ├── danmu.py
│ ├── misceláneos
│ ├─ __init__.py
│ ├─ ─ color_printer.py
│ ├── downloaders.py
│ └ ├─ player.py
│ └─ modelo
│ ├─ __init__.py
│ └─ douyu_msg.py
├─ docs
├ ─ setup.cfg
├─ setup.py
├─ sh.py
└─ tests
Este es el directorio donde Escribí el código danmu.fm la última vez.
Si eres inteligente, te habrás dado cuenta en este momento:
El programa principal no está en el directorio raíz, sino en el segundo directorio danmufm.
Qué diablos es 2.setup.cfg
Qué diablos es 3.setup.py
Para los puntos anteriores, los explicaremos por separado
1.2.1 ¿Por qué debería colocarse el programa principal en el segundo directorio?
Para separar el programa principal en el segundo directorio, colóquelo en el segundo directorio, de modo que cuando En el futuro, habrá más muchas carpetas para no interferir con el código fuente.
Por supuesto, dado que el programa está ubicado en el segundo directorio, la instrucción from import en el script debe usar una ruta relativa para importar.
Las importaciones de rutas relativas deben ejecutarse usando el siguiente comando
1
python3 -m danmufm.danmu [xxxx]
1.2. 2 setup .cfg
Complete los espacios en blanco.
1
2
[Metadatos]
description-file = README.md
Luego ingrese directamente Léame de rebajas.
1.2.3 setup.py
Este es un archivo grande.
El archivo setup py es un archivo de configuración de paquete de software. Configura los propietarios, las dependencias, los puntos de entrada y más del programa.
1
2
3
4
5
6 p>
6
p>
7
8
9
10
11
12
13
14
15.
16
17
18
19
20
21 p> p>
22
23
24
25
26
27 p>
28
29
30
#-*- codificación: UTF-8 -*-
de setuptools import setup, find_packages
"""
Se deben importar las configuraciones para el empaquetado,
"""
VERSION = '0.1. 1 '
setup(name='danmu.fm',
version=VERSION,
description="un pequeño e inteligente reproductor CLI de douyutv,ximalayad , anmu basado en Python",
long_description='simplemente disfruta',
classifiers=[], # Obtener cadenas de ? %3Action=list_classifiers
palabras clave = 'python douyu danmu danmu.fm terminal',
autor='twocucao',
autor_email=' twocucao@gmail.com',
url= ' ',
licencia='MIT',
paquetes=find_packages(),
include_package_data=True,
zip _safe= Verdadero,
install_requires=[
'solicitudes',
],
entry_points={
' console_scripts ':[
'danmu.fm = danmufm.danmu:main'
]
},
)
Existe una herramienta oficial de administración de paquetes, distutils. La configuración es muy simple, pero no admite el atributo Entry_Points. Dado que Entry_Points no se puede usar, no puede usar el comando para saltar al módulo especificado para ejecutar el programa. Ejecute el programa, lo que significa que la herramienta oficial es inconveniente. Escriba la línea de comando. Las herramientas de configuración son mejores.
Lo único a tener en cuenta arriba es que install_requires agrega dependencias. El resto ya podéis adivinar qué hace. Puedes mirar el código tú mismo, no diré más.
2. Publicación
La publicación es el proceso de publicar una versión del programa empaquetado en el repositorio.
2.1. Registrar una cuenta pypi
Visite este enlace y regístrese:
2.2. Registre el paquete Python en Cuentas
Vaya a el proyecto Rootee el directorio y ejecute
1
python3 setup.py registrarse
Este paso le pedirá que ingrese la información que acaba de registrar. El programa le pedirá que ingrese la cuenta y la contraseña que acaba de registrar para registrar el paquete de software. Después de registrar el paquete, tendrás un pequeño repositorio. Puede almacenar diferentes versiones de danmu.fm.
La biblioteca de la versión registrada se puede ver en esta dirección.
2.3 Cargue la herramienta de línea de comandos Python empaquetada.
Aquí necesitas usar una pequeña herramienta-cordel.
twine es una forma más segura y sencilla de cargar código empaquetado.
1
pip3 install twine
Luego puedes comenzar a empaquetar tu código en dos versiones, una que no requiere compilación y otra que requiere la versión compilada. (tiene un nombre raro, por cierto).
1
python setup.py sdist bdist_wheel
El resto es obvio, sube el programa construido al repositorio.
1
twine uploads dist/danmu.fm-0.1.2*
Luego, instale y pruebe
1
pip3 install danmu.fm --upgrade
Así es como funciona la herramienta de línea de comandos.
1
danmu.fm -q 2 -v 1
3 Mejora
Mejorar continuamente el código y luego empaquetarlo. El programa final se publica en la fuente del software para que otros lo utilicen. Este es todo el proceso de empaquetado y lanzamiento de PIP.
En este punto, es posible que necesites utilizar un software de control de versiones.
Es posible que necesites probar más código.