Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
The March To 3
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
daniellindsley
April 08, 2013
Technology
160
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The March To 3
The How's and Why's of porting to Python 3.
daniellindsley
April 08, 2013
Transcript
49 slides
The March To3
Who? • Daniel Lindsley • Pythonista since 2003 • Djangonaut
since 2006 • Author of Tastypie / Haystack / itty / others
None
Your language is...
Your language is... DEAD
Your language is... DEAD ...for small values of “dead”.
None
None
⦸
None
None
⦸
None
is dead;
is dead; Long live !
None
Why port to Python 3?
Active Development Python 2.7.x will only get security updates. No
Python 2.8 ever.
As Fast As 2.7 With 3.3 & it’ll only get
better.
Cleaned Up Syntax We’ll get to some of these in
a bit.
Better String Handling Unicode everywhere.
Stable
None
Changes from 2 to 3 •Removals • Backticks, classic classes
• <>, apply, reduce, dict.has_key • Others
Changes from 2 to 3 •Changed • print is now
print() • next() is now __next__() • Better raise syntax • Metaclasses
Changes from 2 to 3 •Changed (cont.) • Faster Decimal
implementation • Reorganized & spruced up stdlib • Careful with I/O!
Changes from 2 to 3 •New! • Built-in OrderedDict •
String formatting • dict / set comprehensions • Generator delegation via yield from
Changes from 2 to 3 •New! (cont.) • Built-in virtualenv
support! • unittest2 by default! • World domination with importlib
None
“What versions should I support?”
“What versions should I support?” Simple answer: Python 2.6+ &
Python 3.3+
None
“So how do I port?”
IT DEPENDS!
Decide between... • A One-time port • A Combined 2
& 3 codebase ...or...
None
The One-time port
The One-time port • Ensure you have good test coverage
• Use 2to3 to convert the codebase • Run tests & fix until it passes
None
The Combined 2 & 3 codebase
The Combined 2 & 3 codebase • First, you need
a venv: •virtualenv -p python3 env3 •. env3/bin/activate
The Combined 2 & 3 codebase • Ensure you have
good test coverage • Require six as a dependency • Use six to patch over the differences • Run tests in Py3 & fix until it passes... • ...then run tests in Py2 & fix until it passes!
None
Using six in practice
Demo time.
None
More information • http://pyvideo.org/video/1730/python-33- trust-me-its-better-than-27 • http://pyvideo.org/video/1787/porting- django-apps-to-python-3 • http://pyvideo.org/video/1704/why-you-
should-use-python-3-for-text-processing • http://pythonhosted.org/six/
More information • http://www.dabeaz.com/python3io/ MasteringIO.pdf
Thanks! @daniellindsley https://github.com/toastdriven
More Decks by daniellindsley
See All by daniellindsley
The Unenviable Tutorial
daniellindsley
3
180
How (Not) To Build An OSS Community
daniellindsley
1
280
Avoiding The Search Hall Of Shame
daniellindsley
3
460
API Design Tips
daniellindsley
14
4k
Building A Python-based Search Engine
daniellindsley
20
2.6k
RESTful APIs with Tastypie
daniellindsley
19
2.9k
Django Boston - 2011
daniellindsley
4
300
Getting The Most Out Of Haystack
daniellindsley
5
260
Other Decks in Technology
See All in Technology
_マネジメントする人される人ナイト_2026__良いチームを作っていきたい_お気持ち_.pdf
xkxaxkx
0
450
狙われているAPIの脆弱性!今こそ手をつけるべき根本的な対策とは?
nagix
0
130
顧客合意を取りながら進めるAWSコスト削減の実践
optim
0
170
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
140
3文字略語に騙されない! 世界一わかりやすい『EDR』超入門
kamadamakoto
1
140
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
17
120k
常時稼働エージェントの作り方(Claude公式ブログを資料化)
minorun365
PRO
6
9.4k
81天的 AI Agent 軟體開發團隊治理實務分享
regionbbs
0
170
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
260
Kiro IDE 入門 (画面の各部から、頼み方、任せ方、戻し方まで) | 目指せ Kiro マスター 02
inariku
PRO
4
240
「AIチャットからもできないの?」と言われたら ~業務アプリをMCP対応するときの認証・認可の勘所
oidfj
0
330
【Oracle AI SPOTLIGHT ウェビナー】【特別開催:日本語で解説!】Oracle AI World 2026 最新情報フィードバック
oracle4engineer
PRO
1
220
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.4k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
Rebuilding a faster, lazier Slack
samanthasiow
85
9.8k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Rails Girls Zürich Keynote
gr2m
96
14k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
350
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
750
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Done Done
chrislema
187
17k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
570
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630