/
Ayuda.txt
187 lines (168 loc) · 7.73 KB
/
Ayuda.txt
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#Visores de rainfall radar:
http://www.aemet.es/es/eltiempo/observacion/radar -> https://opendata.aemet.es/centrodedescargas/inicio
https://www.woespana.es/weather/maps/radar
https://www.rainviewer.com/ -> https://www.rainviewer.com/api.html
https://www.rainradar.net/
#Organización (layout) del proyecto############################################
Ver https://realpython.com/python-application-layouts/)
Tipos de layouts:
one-off scripts
command-line applications (CLI apps)
installable package
#Rutas del proyecto:
El proyecto esta en ~/tormetron/...
El proyecto incluye varios ingredientes:
Instalador del paquete
setup.py
MANIFEST.in
README.md
LICENSE
requirements.txt (opcional?)
Cosas de pypi:
dist (carpeta)
build (carpeta)
tormetron.egg-info (carpeta)
Cosas de git:
.git (carpeta)
.gitignore (fichero)
.gitattributes
Cosas de Eclipse:
.settings (carpeta)
org.eclipse.core.resources.prefs con el encoding de los modulos
.project (fichero)
.pydevproject (fichero)
El paquete es una subcarpeta del proyecto: ~/tormetron/tormetron/...
El paquete incluye sus:
__init__.py Se ejecuta cuando se importa el paquete (desde un script o desde el interprete interactivo de python)
__main__.py Se ejecuta cuando se llama al paquete en linea de comandos con \>python -m tormetron
mimodulo.py, con las clases Clase1 y Clase2
Si no tiene __main__.py, no vale para ejecutarlo en linea de comandos: hay que importarlo desde un script o el interprete de python
#Preparación de packages y subida a pypi##########################################
Ver:
https://packaging.python.org/tutorials/packaging-projects/
https://realpython.com/pypi-publish-python-package/
https://realpython.com/python-application-layouts/
https://realpython.com/pipenv-guide/
#setup.py -> Información para construir el paquete
Ver:
https://docs.python.org/2/distutils/setupscript.html
http://www.3engine.net/wp/2016/05/como-preparar-y-distribuir-un-paquete-python/
#MANIFEST.in -> Ficheros que se incluyen en el paquete
Ver:
https://python.readthedocs.io/en/stable/distutils/sourcedist.html -> 4.1. Specifying the files to distribute
#README.md -> Markdown syntax:
Ver
https://guides.github.com/features/mastering-markdown/
https://help.github.com/en/articles/basic-writing-and-formatting-syntax
#Building and uploading to pypi (preparar y distribuir)
Preparar (building):
$ python setup.py sdist
-> Crea:
/dist/tormetron-0.0.dev1.tar.gz
/tormetron.egg-info/*.*
Si uso tb la opción bdist:
$ python setup.py sdist bdist
-> Crea también:
/dist/tormetron-0.0.dev1.win-amd64.zip ->->->->-> No se para que sirve; lo elimino
/build/*.* -> Copia del paquete sin comprimir
Ver https://python.readthedocs.io/en/stable/distutils/sourcedist.html para formato generado
No funciona: $ python setup.py sdist bdist_wheel
Pruebo a instalar el .tar.gz generado (ok):
$ pip install ./dist/tormetron-0.0.dev1.tar.gz ($ pip install dist/tormetron-0.0.dev1.tar.gz)
...
Successfully installed tormetron-0.0.dev1
Chequeo el paquete generado:
$ twine check dist/*
Subir a test.pypi:
$ twine upload --repository-url https://test.pypi.org/legacy/ dist/*
View at:
https://test.pypi.org/project/tormetron/0.0.dev2/
Instalación de tormetron 0.0.dev2:
pip install -i https://test.pypi.org/simple/ tormetron==0.0.dev2
Subir a pypi:
$ twine upload dist/*
View at:
https://pypi.org/project/tormetron/0.0.dev2/
Instalación de tormetron (última versión, por el momento, 0.0.dev2):
pip install tormetron
Puedo preparar y subir a pypi en un paso:
$ python setup.py register
$ python setup.py sdist upload
Chequeos:
Reviso si ya tengo instalado el tormetron:
$ pip freeze
...
tormetron==0.0.dev1
...
Lo desintalo:
$ pip uninstall tormetron
Uninstalling tormetron-0.0.dev1:
Would remove:
c:\osgeo4w64\apps\python37\lib\site-packages\tormetron-0.0.dev1-py3.7.egg-info
c:\osgeo4w64\apps\python37\lib\site-packages\tormetron\*
c:\osgeo4w64\apps\python37\scripts\tormetron-script.py
c:\osgeo4w64\apps\python37\scripts\tormetron.exe
Would not remove (might be manually added):
c:\osgeo4w64\apps\python37\lib\site-packages\tormetron\.aemet\Leeme.txt
c:\osgeo4w64\apps\python37\lib\site-packages\tormetron\.aemet\Leeme.txt.bak
c:\osgeo4w64\apps\python37\lib\site-packages\tormetron\.aemet\api.key
Proceed (y/n)?
Elimino tb la carpeta c:\osgeo4w64\apps\python37\lib\site-packages\tormetron\.aemet\*.*
Pruebo a instalar la nueva versión:
$ pip install tormetron
...
Successfully installed tormetron-0.0.dev2
En cualquier momento puedo desinstalar la versión de site-packages e instalar la que tengo en desarrollo (sin subir a pypi):
$ pip uninstall tormetron
$ pip install d:/_ws/tormetron
#Alternativas para usar o ejecutar un paquete##################################
Ejecución en linea de comandos:
Cargar el paquete ejecutando su modulo __main__.py:
~/proyecto/> python -m paquete
Carga el __main__.py del paquete, que lo primero que hace es importar los módulos que necesita ese paquete:
import mimodulo
o bien:
from mimodulo import Clase1
Orden de busqueda de los modulo al ejecutar el import
Ruta en la que esta el python.exe (os.path.dirname(os.path.abspath(sys.executable)))
Ruta en la que está el módulo (os.path.dirname(os.path.abspath(__file__)))o, si se esta en interactivo, ruta desde la que se llama al interprete de python
Rutas del PYTHONPATH
Rutas especificadas en la instalación de python (site-packages, etc)
Rutas especificadas en propiedades del proyecto de eclipse
No busca en las rutas del PATH
No busca en la ruta desde la que se ejecuta el modulo
Ejecución desde el interprete de python
Secuencia básica
En gitbash (o cmd):
Ir a la carpeta en la que tienes tus proyectos (en mi caso D;\_ws)
$ cd d:
$ cd _ws
No se si hay que iniciar git:
$ git init
Descargar el repo de tormetron desde github:
$ git clone https://github.com/jlbmdm/tormetron.git
No estoy seguro si se escribe así... o si tienes que poner delante tu nombre de usuario de github.com (tu e-mail)
Supongo que pide usuario y contraseña (puede que más de una vez).
Cuando consigas hacer tu copia del repo, consulta el estado:
$ git status
Si en el entretando yo he hecho cambios te avisa que la versión en github.com tiene cambios. Actualiza tu versión con:
$ git pull
Get the latest version from the remote. This saves merging issues later.
Modifica en tu PC uno de los ficheros, por ejemplo el Readme.md con un editor (p. ej. notepad++).
Pregunta de nuevo el estado:
$ git status
Te dirá que readme.md ha cambiado en tu local
Carga el fichero modificado en el staging area (el index) que es como la bandeja de salida
$ git add README.md
__ATENCION__: git distingue mayusculas/minúsculas: usar la grafía correcta
Sube los cambios a tu repo local:
$ git commit -m "Cambios menores en readme.md"
Subelo al repo remoto (a github.com):
Si pones esto:
$ git push origin
Entiendo que pides incorporar los cambios al master y lo tengo que autorizar
Si pones esto otro:
$ git push origin davidBranch
Supongo que creas una rama tuya y no me pregunta nada.
Eso sí, cuando quieras hacer un merge al master, con todos los cambios, supongo que lo tendré que autorizar yo
to be continued...