{ "info": { "author": "ESCO", "author_email": "franjcesco@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Gu\u00eda de los Paquetes de Python (PIP)\nEstos paquetes nos permiten instalar los proyectos que deseemos con un simple comando. Tenemos dos formas de compartir dichos paquetes, dependiendo de si lo queremos publicar para todo el mundo o de forma privada. Si lo subimos a su propio repositorio oficial: [PyPi](https://pypi.org) los archivos ser\u00e1n completamente p\u00fablicos. Por lo que si queremos mantener nuestro paquete privado debemos utilizar cualquier via que nos permita almacenar el directorio, como *GitHub* con un repositorio privado.\n\n## 1. Registrarnos en PyPi\nSi queremos compartirlo de forma p\u00fablica tenemos que registrarnos [aqu\u00ed](https://pypi.org/account/register/). Este repositorio nos permitir\u00e1 almacenar las diferentes versiones del proyecto.\n\n## 2. Herramientas necesarias\nTenemos que comprobar que tenemos *Python* y *Pip* instalado.\n```\npython -V # para python version (2/3)\npython -m pip --version\n```\nDe no estar instalados no podremos continuar, as\u00ed que inst\u00e1lalos de no tenerlos.\n\nInstalamos los paquetes necesarios, teniendo en cuenta de que **si tenemos diferentes librerias de Python en el sistema** tenemos que instalarle los paquetes a la que vayamos a usar posteriormente. Simplemente indic\u00e1ndole `sudo phyton3 -m pip install ...` sustituyendo el 3 por la versi\u00f3n que queramos.\n\n- **Setuptools:** [Setuptools](https://pypi.org/project/setuptools/) se utiliza para crear y distrubuir los paquetes de Python.\n- **Wheel:** El paquete [Wheel](https://pypi.org/project/wheel/) nos permite realizar el comando `bdist_wheel` que crea el archivo ejecutable `.whl`, `pip install` se encarga de su ejecuci\u00f3n.\n- **Twine:** El paquete [Twine](https://pypi.org/project/twine/) nos aporta una conexi\u00f3n segura para subir los archivos a *PyPi*. \n- **Tqdm:** Es usado internamente por Twine.\n\n```\nsudo python -m pip install --upgrade pip setuptools wheel\nsudo python -m pip install tqdm\nsudo python -m pip install --user --upgrade twine\n```\n> Al indicarle `--user` tenemos que cercionarnos posteriormente de usar siempre los comandos con permisos `sudo`, de lo contrario no funcionar\u00e1n y tampoco nos arrojar\u00e1 un error descriptivo.\n\n## 3. Creaci\u00f3n del proyecto\nCreamos un directorio para nuestro paquete, en este ejemplo se va a llamar `paquete_pkg`, el nombre de este directorio no va a una vez que est\u00e9 subido, as\u00ed que mientras ma\u015b descriptivo mejor.\n\nAhora entramos en nuestro directorio y creamos un archivo vacio que ser\u00e1 nuestro script. A nuestro script lo vamos a llamar `hola`.\n```\ncd paquete_pkg\n\ntouch hola\n```\nAhora abriremos `hola`.\n```\nnano hola\n```\nY le a\u00f1adimos solo un par de l\u00edneas:\n```\n#!/usr/bin/env python3\n\necho \"hey there, this is my first pip package\"\n```\nUna vez guardado, vamos a hacerlo ejectuable:\n`chmod +x hola`\n\nLo siguiente es crear el archivo `setup.py`\n`touch setup.py`\n\nY le a\u00f1adimos toda la informaci\u00f3n del paquete:\n```\nimport setuptools\n\nwith open(\"README.md\", \"r\") as fh:\n long_description = fh.read()\n\n\nsetuptools.setup(\n name='nombre de nuestro paquete', \n version='0.1',\n scripts=['hola'] ,\n author=\"Deepak Kumar\",\n author_email=\"deepak.kumar.iet@gmail.com\",\n description=\"A Docker and AWS utility package\",\n long_description=long_description,\n long_description_content_type=\"text/markdown\",\n url=\"https://github.com/javatechy/dokr\",\n packages=setuptools.find_packages(),\n include_package_data=True,\n zip_safe=True,\n classifiers=[\n \"Programming Language :: Python :: 3\",\n \"License :: OSI Approved :: MIT License\",\n \"Operating System :: OS Independent\",\n ],\n )\n```\n> El nombre que le demos m\u00e1s arriba ser\u00e1 el nombre con el que se subir\u00e1.\n\n## 4. Compilar el paquete\nVamos a la carpeta de nuestro proyecto y ejecutamos `python setup.py bdist_wheel`. Esto crear\u00e1 la toda la estructura del paquete.\n\n## 5. Instalar en local\nSi queremos comprobar su funcionamiento lo instalamos localmente as\u00ed:\n`python -m pip install dist/hola-0.1-py3-none-any.whl`\n\n> Recuerda usar la versi\u00f3n de Python en la que has instalado todo lo anterior.\n\n## 6. Subir el pip\n1. Creamos el archivo `.pypirc` en nuestro directorio principal.\n - **Para Windows:** `C:\\Users\\UserName\\.pypirc`\n - **Para Linux:** `~/.pypirc `\n \n2. A\u00f1adimos el siguiente contenido al archivo y reemplazamos `usuario` con nuestro nombre de usuario.\n```\n[distutils] \nindex-servers=pypi\n[pypi] \nrepository = https://upload.pypi.org/legacy/ \nusername =usuario\n```\n3. Finalmente, para subir nuestro paquete usamos *Twine*:\n`python -m twine upload dist/*`\n\nSi queremos instalar dicho paquete simplemente hacemos:\n`pip install nombredelpaquete`\n\n## 7. Actualizar nuestro paquete\nAbrimos nuestro `setup.py` y aumentamos su versi\u00f3n. Ejemplo: `version='0.1'` -> `version='0.2'`. Podemos aumentar su versi\u00f3n c\u00f3mo queramos, es decir, podemos a\u00f1adirle otro decimal.\n\nAbrimos la terminal en nuestro paquete y ejecutamos `python setup.py sdist` para que actualice el paquete con los nuevos cambios.\n\nVolvemos a subir nuestro paquete con:\n`python -m twine upload dist/*`\n\n### A\u00f1adir archivos No Python\nSi queremos a\u00f1adir a nuestro paquete archivos que no sean de Python tenemos que crear un archivo `MANIFEST.in` en la ra\u00edz de nuestro paquete. Nuestro archivo de ejemplo queda as\u00ed:\n```\ninclude MANIFEST.in\ngraft templates\ngraft static\nglobal-include *.html *.js *.css\n\n```\n- `include` -> se utiliza para indicar qu\u00e9 archivo y/o tipo de archivo incluye.\n- `global-include` -> incluye todos los archivos listados.\n- `graft` -> incluye todos los archivos de la carpeta que elijamos.\n\n### Cosas importantes\n- Si tenemos problemas a la hora de subir una nueva versi\u00f3n y nos indica que esa versi\u00f3n ya existe, entramos en `dist/` y borramos las versiones anteriores.\n- Si borramos el paquete en el repositorio oficial ese repositorio desaparece y se convierten en inutilizable.\n- Los subdirectorios que se queramos que se instalen tienen que llevar el archivo `__init__.py`. De lo contrario, al instalarlo en el entorno virtual no lo traera.\n\n> El \u00faltimo punto hay que comprobar si hay que a\u00f1adirlo a todas las carpetas o solo a la primera.\n\n#### Enlaces de referencia\n+ [Build Your First pip Package](https://dzone.com/articles/executable-package-pip-install).\n+ [PyPI How to upload a new version](https://github.com/fhamborg/news-please/wiki/PyPI---How-to-upload-a-new-version).\n+ [Adding Non-Code Files](https://python-packaging.readthedocs.io/en/latest/non-code-files.html).\n+ [Creating a Source Distribution](https://docs.python.org/2/distutils/sourcedist.html#commands).", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/esco/django_ardilla_materialize", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-squirrell-materialize", "package_url": "https://pypi.org/project/django-squirrell-materialize/", "platform": "", "project_url": "https://pypi.org/project/django-squirrell-materialize/", "project_urls": { "Homepage": "https://github.com/esco/django_ardilla_materialize" }, "release_url": "https://pypi.org/project/django-squirrell-materialize/1.4/", "requires_dist": null, "requires_python": "", "summary": "A Docker and AWS utility package", "version": "1.4" }, "last_serial": 5715088, "releases": { "0.4": [ { "comment_text": "", "digests": { "md5": "65b70483db97cb703c492d13bdb5a462", "sha256": "b2edf7f7f1a9ce13e695d12cdd19582c6de73be266d2c7e98f84b0c9c30add77" }, "downloads": -1, "filename": "django_squirrell_materialize-0.4.tar.gz", "has_sig": false, "md5_digest": "65b70483db97cb703c492d13bdb5a462", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4844, "upload_time": "2019-08-21T15:20:39", "url": "https://files.pythonhosted.org/packages/57/17/5a8439030ba31cb0f3d2458c160b375c0b3030b2c9c26b4da1cad61fa17d/django_squirrell_materialize-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "fb773a182d5275657d1802f92484c4ef", "sha256": "3dce27c14ea08d6677c9b92e1dabebbf14d463e069a39aa9899ff9b8e43fc9a3" }, "downloads": -1, "filename": "django_squirrell_materialize-0.5.tar.gz", "has_sig": false, "md5_digest": "fb773a182d5275657d1802f92484c4ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4860, "upload_time": "2019-08-21T15:27:53", "url": "https://files.pythonhosted.org/packages/80/5c/65d4333e340fbebde54f20da10715112a520fea3bd4f0a1f4aad66ba409c/django_squirrell_materialize-0.5.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "9227379269ebfb09ddbe61f1acb6e8f7", "sha256": "94bc8dc0734bb4b0391920d29934665a04c862b3f763ddda98eb6ddc504d8542" }, "downloads": -1, "filename": "django_squirrell_materialize-0.7.tar.gz", "has_sig": false, "md5_digest": "9227379269ebfb09ddbe61f1acb6e8f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4950, "upload_time": "2019-08-21T15:37:05", "url": "https://files.pythonhosted.org/packages/2f/1a/45f80572db99e23556179361d405bf07b8ea7f139af5ef1b4ac8ce579494/django_squirrell_materialize-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "67d96f4ff49113f55e0582b9978bae66", "sha256": "5a284cb42713075cb15def98a0839824c69ad161f80de3d9d591d1bc0e7b5d6c" }, "downloads": -1, "filename": "django_squirrell_materialize-0.8.tar.gz", "has_sig": false, "md5_digest": "67d96f4ff49113f55e0582b9978bae66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5194, "upload_time": "2019-08-21T15:43:42", "url": "https://files.pythonhosted.org/packages/ff/78/f9e542c0ec26b01c83e42006f32b58ab20b8498eb2f734d2a95da7515de3/django_squirrell_materialize-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "ab68e454d46062bd946ef81321b764cf", "sha256": "fcc18688322cdd18cfb07041e86cb0f621f84c43397ed98b73b59d7a24d0df05" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.tar.gz", "has_sig": false, "md5_digest": "ab68e454d46062bd946ef81321b764cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5140, "upload_time": "2019-08-21T15:46:17", "url": "https://files.pythonhosted.org/packages/1f/43/654df9769d6fe5a37c815f0018fd4e6167085f55a8e3f321565d472e3b93/django_squirrell_materialize-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "b9deb31ef82c8a0a5a1ecebe4948931e", "sha256": "41ef5211c4f0b2b584620533d2d8d8fed2804a3173c54530e0da297817d5fff2" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.1.tar.gz", "has_sig": false, "md5_digest": "b9deb31ef82c8a0a5a1ecebe4948931e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5159, "upload_time": "2019-08-22T06:54:48", "url": "https://files.pythonhosted.org/packages/60/48/88e6dda571b7af8e165c5e6e4f2564b323cbcc8076709c457a76bd6abf97/django_squirrell_materialize-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "c59a128211fb675b435a462e412265b4", "sha256": "f291f5217b75189535187344209102e0426039613711020e473f6302729350e9" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.2.tar.gz", "has_sig": false, "md5_digest": "c59a128211fb675b435a462e412265b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4760, "upload_time": "2019-08-22T07:01:14", "url": "https://files.pythonhosted.org/packages/de/10/b3f93a79146bfdcbfa9b4bcd26532f95d3613dd9fc4c30d874c395f3021b/django_squirrell_materialize-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "909096aadb649416f285548212333f9c", "sha256": "b5cf3aef080d817ecd865f86d42c9f344c03bb68d1bb2a2ba564ece526b60262" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.3.tar.gz", "has_sig": false, "md5_digest": "909096aadb649416f285548212333f9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4817, "upload_time": "2019-08-22T07:05:20", "url": "https://files.pythonhosted.org/packages/71/0a/dd8431d6604f3f0eec166d6005fded4bb858fece645e5e391fb0ad8b2135/django_squirrell_materialize-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "80487cf3c5f0db4366cf024f05b18d08", "sha256": "d3a36f83ba8f55583ffac2a27f432682148337aaec0e68d684ead1997acff4c3" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.4.tar.gz", "has_sig": false, "md5_digest": "80487cf3c5f0db4366cf024f05b18d08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4800, "upload_time": "2019-08-22T07:15:08", "url": "https://files.pythonhosted.org/packages/14/3c/ce2f8266090ce469977d8c74d008edd68ff7280899201f5bad99f067522f/django_squirrell_materialize-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "7c8195c35e9a78aa222c31dbe35b7417", "sha256": "3c03672e1bf6307db832f321b678a49dcc46ff45cd57e6132ea3fae7b7b66c9f" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.5.tar.gz", "has_sig": false, "md5_digest": "7c8195c35e9a78aa222c31dbe35b7417", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4804, "upload_time": "2019-08-22T07:17:44", "url": "https://files.pythonhosted.org/packages/9e/25/0cb2068acbba43c3a23a4ad40f7498d7336a9deee8fa9778983f252e7ac2/django_squirrell_materialize-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "09b57eba427d152eed58f3935beb0989", "sha256": "5d71d9bd00b8f046443546e9a1828a1d45f91897bae78648fb4f293ef30b4673" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.6.tar.gz", "has_sig": false, "md5_digest": "09b57eba427d152eed58f3935beb0989", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4761, "upload_time": "2019-08-22T07:26:48", "url": "https://files.pythonhosted.org/packages/19/45/521f2ef649a603614e33592156c65e2f1e083ef8e8e7c284f06d11847910/django_squirrell_materialize-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "a557e8e6478f21118afd82d94fd21090", "sha256": "ff3956ca0e5ad08cad30f8e9677d0fc1528eda0f699904d3ff6eb2e8c16e8240" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.7.tar.gz", "has_sig": false, "md5_digest": "a557e8e6478f21118afd82d94fd21090", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5015, "upload_time": "2019-08-22T07:34:03", "url": "https://files.pythonhosted.org/packages/0e/fa/c3f71d08bee984c6c0aa4cb72ce4a1f55b281e5c69eb4f9488b75e17aab7/django_squirrell_materialize-0.9.7.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "e8455ad317efa9fffe93e2a01dfb398e", "sha256": "3b338abee31f168f302a74fe673312d684503f84806c390436c6a6ab089c038b" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.8.tar.gz", "has_sig": false, "md5_digest": "e8455ad317efa9fffe93e2a01dfb398e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 287961, "upload_time": "2019-08-22T07:42:51", "url": "https://files.pythonhosted.org/packages/e4/b1/bbc84bb6243c22ed062412bd3bb31085cf2b54276c9dd7077328a19a95b7/django_squirrell_materialize-0.9.8.tar.gz" } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "7c83e7e4bdca0dec99b2a28b07057004", "sha256": "17b2ef8155659a2ba3c78ce147f39bb4c3784bd7c62154ec7887fdb64c952daf" }, "downloads": -1, "filename": "django_squirrell_materialize-0.9.9.tar.gz", "has_sig": false, "md5_digest": "7c83e7e4bdca0dec99b2a28b07057004", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 287796, "upload_time": "2019-08-22T07:54:24", "url": "https://files.pythonhosted.org/packages/5d/11/e46fca781cfc340909dab958c55965d5e4eb3f57d5a01984da56728e9900/django_squirrell_materialize-0.9.9.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "c55122c869660e524117d1f8de27e485", "sha256": "f0c2ae4e2fc7e465e4fe06da71b1571d0eeb4cea888ec2abc934ff8260a85f38" }, "downloads": -1, "filename": "django_squirrell_materialize-1.0.tar.gz", "has_sig": false, "md5_digest": "c55122c869660e524117d1f8de27e485", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 287770, "upload_time": "2019-08-22T07:59:32", "url": "https://files.pythonhosted.org/packages/3a/17/67b86fef3e01912f71584123516588624b0f809130e658e0c990a9d59b3e/django_squirrell_materialize-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "d6966f777c456ae4625b2d9f0b9fcc95", "sha256": "3f66eb67507f143e60e199952de9ed6ea92607301aad5db4ccea226afad679dd" }, "downloads": -1, "filename": "django_squirrell_materialize-1.1.tar.gz", "has_sig": false, "md5_digest": "d6966f777c456ae4625b2d9f0b9fcc95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 287819, "upload_time": "2019-08-22T08:04:11", "url": "https://files.pythonhosted.org/packages/0a/2a/e9d9420122f5c9162e30bce05d274d67d3af48896fc5ee16172c9040b1a2/django_squirrell_materialize-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "d5e2e95505a84c5d295d98de398b5999", "sha256": "27094d4e4ef953f7105eff541e73baf38dfa954e925d4c1eb3309bb8e24c125c" }, "downloads": -1, "filename": "django_squirrell_materialize-1.2.tar.gz", "has_sig": false, "md5_digest": "d5e2e95505a84c5d295d98de398b5999", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 287814, "upload_time": "2019-08-22T08:25:29", "url": "https://files.pythonhosted.org/packages/f4/a4/785228fe1c2de3d6ebd0769eba015a66618e94530072e8e61e80dc97ffa1/django_squirrell_materialize-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "c660d780e744ae82664d2e9af12ffed2", "sha256": "f3fc1bef55a40f4e2244769f06aa2379b809093ce9164728e8b06380c3a81890" }, "downloads": -1, "filename": "django_squirrell_materialize-1.3.tar.gz", "has_sig": false, "md5_digest": "c660d780e744ae82664d2e9af12ffed2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 288040, "upload_time": "2019-08-22T10:55:07", "url": "https://files.pythonhosted.org/packages/c8/41/64b8006a59652e98be363016d1e2f8a8d4900842c5617841b4431d1e0701/django_squirrell_materialize-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "35150f7a1d643fe605c649548440aeb2", "sha256": "d925c43fddc63e97f8a08302bf659dc721b85a39f64db92ef62a762c6e8f7db4" }, "downloads": -1, "filename": "django_squirrell_materialize-1.4.tar.gz", "has_sig": false, "md5_digest": "35150f7a1d643fe605c649548440aeb2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 287611, "upload_time": "2019-08-22T13:02:47", "url": "https://files.pythonhosted.org/packages/47/34/82fefd6067dbafa51a4ca1a8ce9f3a890e3e8a1b0d96aa1b5e6f16cc9d6a/django_squirrell_materialize-1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "35150f7a1d643fe605c649548440aeb2", "sha256": "d925c43fddc63e97f8a08302bf659dc721b85a39f64db92ef62a762c6e8f7db4" }, "downloads": -1, "filename": "django_squirrell_materialize-1.4.tar.gz", "has_sig": false, "md5_digest": "35150f7a1d643fe605c649548440aeb2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 287611, "upload_time": "2019-08-22T13:02:47", "url": "https://files.pythonhosted.org/packages/47/34/82fefd6067dbafa51a4ca1a8ce9f3a890e3e8a1b0d96aa1b5e6f16cc9d6a/django_squirrell_materialize-1.4.tar.gz" } ] }