SlideShare a Scribd company logo
1 of 20
Download to read offline
Python Eggs
Alin Voinea @ Eau de Web
Cuprins
● Index egg-uri Python
● Structura unui egg Python
● Utilitare şi şabloane pentru crearea unui egg
● Distribuirea unui egg
● Automatizare
● Proxy eggs server / PyPI mirror
● Custom / Private eggs server
1. Python Package Index (pypi)
“O metoda* mai simpla de a distribui şi instala
un pachet python”
pypi.python.org
*similar cu RPM, DEB, APK, IPK, etc
1. Python Package Index (pypi)
$ pip* install helloworld
$ pip* install http://eggrepo.com/helloworld
*easy_install
2. Structura unui egg
helloworld/
setup.py
README.rst
src/
__init__.py
3. Utilitare şi şablonane
● zopeskel
● templer.core
3.1 ZopeSkel
$ pip install zopeskel
$ zopeskel --list-templates
$ zopeskel basic_namespace
3.1 Custom ZopeSkel templates
$ pip install eea.package
$ zopeskel --list-templates
$ zopeskel eea
4. Distribuirea unui egg python
● Direct Install
$ python setup.py install
● Upload PyPI
$ python setup.py register -r pypi
$ python setup.py sdist upload
$ pip install hello.world
4.1 setup.py
$ vim setup.py
from setuptools import setup
setup(
name=”hello.world”,
version=”1.0”,
…
)
4.1 setup.py
● Metadata:
○ https://docs.python.org/3/distutils/setupscript.html#meta-data
● Classifiers:
○ https://pypi.python.org/pypi?%3Aaction=list_classifiers
4.1 .pypirc*
https://docs.python.org/3/distutils/packageindex.html#pypirc
$ vim /home/user/.pypirc
[distutils]
index-servers =
pypi
[pypi]
repository: http://pypi.python.org/pypi/
username: gigel
password: secret
5 Automatizare
● zest.releaser
● jarn.mkrelease
● eea.eggmonkey
5.1 zest.releaser
“Software releasing made easy and repeatable”
$ pip install zest.releaser
$ cd hello.world
$ prerelease
$ release
$ postrelease
$ fullrelease
5.2 jarn.mkrelease
“Python egg releaser”
$ pip install jarn.mkrelease
$ vim /home/user/.mkrelease
[defaults]
distdefault = eea
[aliases]
all =
pypi
plone
$ mkrelease -d all hello.world
5.3 eea.eggmonkey
“Automate releasing eggs with jarn.mkrelease”
$ vim buildout.cfg
[buildout]
extensions +=
mr.developer
eea.eggmonkey
$ bin/monkey -d eea hello.world
$ bin/print_unreleased_packages
6. Mirroring
“collective.eggproxy”
$ vim buildout.cfg
[buildout]
index = http://eggrepo.eea.europa.eu/pypi/
7. Custom eggs server
“ClueReleaseManager”
$ vim buildout.cfg
[buildout]
find-links = http://eggrepo.eea.europa.eu/simple
$ python setup.py register -r http://eggrepo.eea.europa.eu
8. Legături externe
● http://taskman.eionet.europa.eu/projects/zope/wiki/WebDevelopmentCycle
● http://taskman.eionet.europa.eu/projects/zope/wiki/HowToReleaseAnEgg
● http://taskman.eionet.europa.eu/projects/zope/wiki/Eggmonkey
● https://docs.python.org/3.1/distutils/uploading.html
● http://mrtopf.de/blog/en/a-small-introduction-to-python-eggs/
● https://docs.python.org/3/distutils/packageindex.html
● https://docs.python.org/3/distutils/setupscript.html#meta-data
● https://pypi.python.org/pypi?%3Aaction=list_classifiers
● https://docs.python.org/3/distutils/packageindex.html#pypirc
● https://pypi.python.org/pypi/zest.releaser
● https://pypi.python.org/pypi/jarn.mkrelease
● https://pypi.python.org/pypi/eea.eggmonkey
● https://pypi.python.org/pypi/collective.eggproxy
● https://pypi.python.org/pypi/ClueReleaseManager
● http://stackoverflow.com/questions/3220404/why-use-pip-over-easy-install
9. Alte întrebări?

More Related Content

What's hot

Deployment presentation
Deployment presentationDeployment presentation
Deployment presentation
Corey Purcell
 
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Глеб Тарасов
 
Webinar - Managing Files with Puppet
Webinar - Managing Files with PuppetWebinar - Managing Files with Puppet
Webinar - Managing Files with Puppet
OlinData
 

What's hot (20)

Deployment presentation
Deployment presentationDeployment presentation
Deployment presentation
 
MongoSV 2011
MongoSV 2011MongoSV 2011
MongoSV 2011
 
Expression Language 3.0
Expression Language 3.0Expression Language 3.0
Expression Language 3.0
 
Chef 0.10 Overview
Chef 0.10 OverviewChef 0.10 Overview
Chef 0.10 Overview
 
JavaScript tips - Unnest callbacks and method declarations
JavaScript tips - Unnest callbacks and method declarationsJavaScript tips - Unnest callbacks and method declarations
JavaScript tips - Unnest callbacks and method declarations
 
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
 
Bento lunch talk
Bento   lunch talkBento   lunch talk
Bento lunch talk
 
Symfony Performance
Symfony PerformanceSymfony Performance
Symfony Performance
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
Webinar - Managing Files with Puppet
Webinar - Managing Files with PuppetWebinar - Managing Files with Puppet
Webinar - Managing Files with Puppet
 
GIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APPGIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APP
 
AnsibleFest 2014 - Role Tips and Tricks
AnsibleFest 2014 - Role Tips and TricksAnsibleFest 2014 - Role Tips and Tricks
AnsibleFest 2014 - Role Tips and Tricks
 
Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章
 
Tracking large game assets with Git LFS
Tracking large game assets with Git LFSTracking large game assets with Git LFS
Tracking large game assets with Git LFS
 
Do you know all of Puppet?
Do you know all of Puppet?Do you know all of Puppet?
Do you know all of Puppet?
 
V2 and beyond
V2 and beyondV2 and beyond
V2 and beyond
 
Webinar - Windows Application Management with Puppet
Webinar - Windows Application Management with PuppetWebinar - Windows Application Management with Puppet
Webinar - Windows Application Management with Puppet
 
GiTFO
GiTFOGiTFO
GiTFO
 
Tracking huge files with Git LFS - LinuxCon 2016
Tracking huge files with Git LFS - LinuxCon 2016Tracking huge files with Git LFS - LinuxCon 2016
Tracking huge files with Git LFS - LinuxCon 2016
 
GTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSourceGTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSource
 

Viewers also liked

Viewers also liked (6)

PyCon US 2009: Challenges and Opportunities for Python
PyCon US 2009: Challenges and Opportunities for PythonPyCon US 2009: Challenges and Opportunities for Python
PyCon US 2009: Challenges and Opportunities for Python
 
Marek Kuziel - Deploying Django with Buildout
Marek Kuziel - Deploying Django with BuildoutMarek Kuziel - Deploying Django with Buildout
Marek Kuziel - Deploying Django with Buildout
 
Buildout future
Buildout futureBuildout future
Buildout future
 
Buildout: Fostering Repeatability
Buildout: Fostering RepeatabilityBuildout: Fostering Repeatability
Buildout: Fostering Repeatability
 
Zen and the Art of Python
Zen and the Art of PythonZen and the Art of Python
Zen and the Art of Python
 
Using Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python ProjectsUsing Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python Projects
 

Similar to Python eggs (RO)

20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting
Kazuhiro Oinuma
 
Using the pip package manager for Odoo
Using the pip package manager for OdooUsing the pip package manager for Odoo
Using the pip package manager for Odoo
Odoo
 

Similar to Python eggs (RO) (20)

Python+gradle
Python+gradlePython+gradle
Python+gradle
 
Welcome to the Cheese Shop: setuptools, virtualenv and PyPUG
Welcome to the Cheese Shop: setuptools, virtualenv and PyPUGWelcome to the Cheese Shop: setuptools, virtualenv and PyPUG
Welcome to the Cheese Shop: setuptools, virtualenv and PyPUG
 
20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting
 
Virtualenv
VirtualenvVirtualenv
Virtualenv
 
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
 
Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015
 
TYPO3 8 is here - how we keep EXT:solr uptodate with the TYPO3 core
TYPO3 8 is here - how we keep EXT:solr uptodate with the TYPO3 coreTYPO3 8 is here - how we keep EXT:solr uptodate with the TYPO3 core
TYPO3 8 is here - how we keep EXT:solr uptodate with the TYPO3 core
 
From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...
 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic  Perl ProgrammerModern Perl for the Unfrozen Paleolithic  Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl Programmer
 
Practical Pig and PigUnit (Michael Noll, Verisign)
Practical Pig and PigUnit (Michael Noll, Verisign)Practical Pig and PigUnit (Michael Noll, Verisign)
Practical Pig and PigUnit (Michael Noll, Verisign)
 
Buildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonBuildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in python
 
Using the pip package manager for Odoo
Using the pip package manager for OdooUsing the pip package manager for Odoo
Using the pip package manager for Odoo
 
Using the "pip" package manager for Odoo/OpenERP - Opendays 2014
Using the "pip" package manager for Odoo/OpenERP - Opendays 2014Using the "pip" package manager for Odoo/OpenERP - Opendays 2014
Using the "pip" package manager for Odoo/OpenERP - Opendays 2014
 
Plone Einführung
Plone EinführungPlone Einführung
Plone Einführung
 
Testing your infallibleness
Testing your infalliblenessTesting your infallibleness
Testing your infallibleness
 
Acceptance testing plone sites and add ons with robot framework and selenium
Acceptance testing plone sites and add ons with robot framework and seleniumAcceptance testing plone sites and add ons with robot framework and selenium
Acceptance testing plone sites and add ons with robot framework and selenium
 
Python x Django
Python x DjangoPython x Django
Python x Django
 
Salt stack
Salt stackSalt stack
Salt stack
 
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)Puppet Camp LA 2015: Package Managers and Puppet (Beginner)
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)
 
Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015
 

More from Alin Voinea

More from Alin Voinea (16)

EEA & Eau de Web Front-end add-ons - Plone conference 2023
EEA & Eau de Web Front-end add-ons - Plone conference 2023 EEA & Eau de Web Front-end add-ons - Plone conference 2023
EEA & Eau de Web Front-end add-ons - Plone conference 2023
 
EEA Faceted Navigation and Plone 6.pdf
EEA Faceted Navigation and Plone 6.pdfEEA Faceted Navigation and Plone 6.pdf
EEA Faceted Navigation and Plone 6.pdf
 
EEA Volto Add-ons - Plone Conference 2020
EEA Volto Add-ons - Plone Conference 2020EEA Volto Add-ons - Plone Conference 2020
EEA Volto Add-ons - Plone Conference 2020
 
Plone 6 / Volto Dexterity Content Types - Schema & Layout
Plone 6 / Volto Dexterity Content Types - Schema & LayoutPlone 6 / Volto Dexterity Content Types - Schema & Layout
Plone 6 / Volto Dexterity Content Types - Schema & Layout
 
Docker & rancher
Docker & rancherDocker & rancher
Docker & rancher
 
Continuous Delivery/Deployment w/ Gitflow, Docker, Jenkins and Rancher
Continuous Delivery/Deployment w/ Gitflow, Docker, Jenkins and RancherContinuous Delivery/Deployment w/ Gitflow, Docker, Jenkins and Rancher
Continuous Delivery/Deployment w/ Gitflow, Docker, Jenkins and Rancher
 
Faceted navigation in Plone 5
Faceted navigation in Plone 5Faceted navigation in Plone 5
Faceted navigation in Plone 5
 
Docker and plone
Docker and ploneDocker and plone
Docker and plone
 
Plone and docker
Plone and dockerPlone and docker
Plone and docker
 
Kotti CMS 101
Kotti CMS 101Kotti CMS 101
Kotti CMS 101
 
Developing Single Page Applications on Plone using AngularJS
Developing Single Page Applications on Plone using AngularJSDeveloping Single Page Applications on Plone using AngularJS
Developing Single Page Applications on Plone using AngularJS
 
Responsive design in plone
Responsive design in ploneResponsive design in plone
Responsive design in plone
 
Plone and docker
Plone and dockerPlone and docker
Plone and docker
 
Display eea’s semantic content with elasticsearch and node.js applications sh...
Display eea’s semantic content with elasticsearch and node.js applications sh...Display eea’s semantic content with elasticsearch and node.js applications sh...
Display eea’s semantic content with elasticsearch and node.js applications sh...
 
New EEA Plone Add-ons
New EEA Plone Add-onsNew EEA Plone Add-ons
New EEA Plone Add-ons
 
Data visualization in plone
Data visualization in ploneData visualization in plone
Data visualization in plone
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

Python eggs (RO)

  • 1. Python Eggs Alin Voinea @ Eau de Web
  • 2. Cuprins ● Index egg-uri Python ● Structura unui egg Python ● Utilitare şi şabloane pentru crearea unui egg ● Distribuirea unui egg ● Automatizare ● Proxy eggs server / PyPI mirror ● Custom / Private eggs server
  • 3. 1. Python Package Index (pypi) “O metoda* mai simpla de a distribui şi instala un pachet python” pypi.python.org *similar cu RPM, DEB, APK, IPK, etc
  • 4. 1. Python Package Index (pypi) $ pip* install helloworld $ pip* install http://eggrepo.com/helloworld *easy_install
  • 5. 2. Structura unui egg helloworld/ setup.py README.rst src/ __init__.py
  • 6. 3. Utilitare şi şablonane ● zopeskel ● templer.core
  • 7. 3.1 ZopeSkel $ pip install zopeskel $ zopeskel --list-templates $ zopeskel basic_namespace
  • 8. 3.1 Custom ZopeSkel templates $ pip install eea.package $ zopeskel --list-templates $ zopeskel eea
  • 9. 4. Distribuirea unui egg python ● Direct Install $ python setup.py install ● Upload PyPI $ python setup.py register -r pypi $ python setup.py sdist upload $ pip install hello.world
  • 10. 4.1 setup.py $ vim setup.py from setuptools import setup setup( name=”hello.world”, version=”1.0”, … )
  • 11. 4.1 setup.py ● Metadata: ○ https://docs.python.org/3/distutils/setupscript.html#meta-data ● Classifiers: ○ https://pypi.python.org/pypi?%3Aaction=list_classifiers
  • 12. 4.1 .pypirc* https://docs.python.org/3/distutils/packageindex.html#pypirc $ vim /home/user/.pypirc [distutils] index-servers = pypi [pypi] repository: http://pypi.python.org/pypi/ username: gigel password: secret
  • 13. 5 Automatizare ● zest.releaser ● jarn.mkrelease ● eea.eggmonkey
  • 14. 5.1 zest.releaser “Software releasing made easy and repeatable” $ pip install zest.releaser $ cd hello.world $ prerelease $ release $ postrelease $ fullrelease
  • 15. 5.2 jarn.mkrelease “Python egg releaser” $ pip install jarn.mkrelease $ vim /home/user/.mkrelease [defaults] distdefault = eea [aliases] all = pypi plone $ mkrelease -d all hello.world
  • 16. 5.3 eea.eggmonkey “Automate releasing eggs with jarn.mkrelease” $ vim buildout.cfg [buildout] extensions += mr.developer eea.eggmonkey $ bin/monkey -d eea hello.world $ bin/print_unreleased_packages
  • 17. 6. Mirroring “collective.eggproxy” $ vim buildout.cfg [buildout] index = http://eggrepo.eea.europa.eu/pypi/
  • 18. 7. Custom eggs server “ClueReleaseManager” $ vim buildout.cfg [buildout] find-links = http://eggrepo.eea.europa.eu/simple $ python setup.py register -r http://eggrepo.eea.europa.eu
  • 19. 8. Legături externe ● http://taskman.eionet.europa.eu/projects/zope/wiki/WebDevelopmentCycle ● http://taskman.eionet.europa.eu/projects/zope/wiki/HowToReleaseAnEgg ● http://taskman.eionet.europa.eu/projects/zope/wiki/Eggmonkey ● https://docs.python.org/3.1/distutils/uploading.html ● http://mrtopf.de/blog/en/a-small-introduction-to-python-eggs/ ● https://docs.python.org/3/distutils/packageindex.html ● https://docs.python.org/3/distutils/setupscript.html#meta-data ● https://pypi.python.org/pypi?%3Aaction=list_classifiers ● https://docs.python.org/3/distutils/packageindex.html#pypirc ● https://pypi.python.org/pypi/zest.releaser ● https://pypi.python.org/pypi/jarn.mkrelease ● https://pypi.python.org/pypi/eea.eggmonkey ● https://pypi.python.org/pypi/collective.eggproxy ● https://pypi.python.org/pypi/ClueReleaseManager ● http://stackoverflow.com/questions/3220404/why-use-pip-over-easy-install