Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Building an open source Python application, the...
Search
Kiran
October 26, 2013
Technology
0
430
Building an open source Python application, the right way
Overview of conventions/best practices to follow when writing an open source Python application
Kiran
October 26, 2013
Tweet
Share
More Decks by Kiran
See All by Kiran
Building Terrariums
kirang89
0
40
The Road to a Masterless Multi-node Distributed System in Elixir
kirang89
5
700
Building a Tic Tac Toe AI in Python
kirang89
0
390
A Gentle Introduction to Generators and Coroutines
kirang89
1
270
Leverage PyCon India to help grow the Python community
kirang89
0
88
Lets learn Python !
kirang89
0
110
Python Month
kirang89
0
72
Why learn Python ?
kirang89
0
120
Other Decks in Technology
See All in Technology
LLMOpsのこれまでとこれからを学ぶ
nsakki55
2
540
なぜ令和の今ゲームボーイを触るのか
kimkim0106
0
110
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
8
700
配列に見る bash と zsh の違い
kazzpapa3
3
190
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
3
390
Cosmos World Foundation Model Platform for Physical AI
takmin
0
1k
(技術的には)社内システムもOKなブラウザエージェントを作ってみた!
har1101
0
440
プレビュー版のDevOpsエージェントを現段階で触ってみた
ad_motsu
1
160
React 19時代のコンポーネント設計ベストプラクティス
uhyo
4
1.1k
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
74k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
440
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
260
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
66k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
360
The Spectacular Lies of Maps
axbom
PRO
1
540
Context Engineering - Making Every Token Count
addyosmani
9
670
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
320
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
88
How to build a perfect <img>
jonoalderson
1
5.2k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
330
Transcript
Building open source the Python application right way an
Hi.
I’m Kiran. Hacker Programmer Open Source enthusiast Computer Science fanboy
Currently, having an affair with Python
Why follow Conventions Guidelines Best Practices
Your code is Open Source !
What does that mean You ask ?
Code available to People will try to help start using
it everyone People will(might)
So, what do I do ?
Make it easier for people to use your application
How ?
Let’s start with basic project structure
None
Let’s make it simpler
Documentation Tests Application Dependency Management Setup Task Execution Extras Publish
Application
Write good code. http://www.python.org/dev/peps/pep-0008/
Don’t bloat your code with Use them when required classes
to architect your application modules Use
Tests
“Code not tested is broken by design” - Jacob Kaplan
Moss
Lots of ways to your application Test
Start with simple unit tests
unittest Nose py.test Most commonly used
Documentation
For small projects Code is the documentation http://www.python.org/dev/peps/pep-0257/
Sadly This is not scalable
Use Sphinx http://sphinx-doc.org/
HTML EPUB PDF Man Pages LaTex Automatic Syntax Highlighting Plain
Text Theming Support Internationalisation
None
Dependency Management
Project Dependencies requirements.txt
pip install -r requirements.txt then
None
Setup
Pro Tip: Use Virtualenv to setup your environment
Why ? Test with different Python versions No unnecessary namespace
pollution Different environments and settings per project Install dependencies inside environment
Publish
setup.py contains the necessary information required for it’s installation Every
project’s
Packages and uploads your application to Python Package Index a.k.a
PyPI
setup( name='project name', version=myapp.__version__, description='project description here', license=open("LICENSE").read(), author='author', author_email='email',
url='project url', packages=['myapp'], include_package_data=True, classifiers=( 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Natural Language :: English', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.3', ), test_suite='tests', )
Register at PyPI python setup.py register Package and Upload application
python setup.py sdist upload
Install application on any platform pip install myapp
None
Task Execution
Makefile Use a to automate multiple tasks and commands http://mrbook.org/tutorials/make/
Extras (a.k.a enhancements)
AUTHORS CHANGELOG CONTRIBUTING
is License very important for open source projects http://www.tldrlegal.com/
Recap
RECAP Documentation Tests Application Dependency Management Setup Task Execution Extras
Publish
Questions ?
Thank you ! @kirang89 http://kirang.in