forked from mattmakai/fullstackpython.com
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbest-python-resources.html
381 lines (379 loc) · 33 KB
/
best-python-resources.html
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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Matt Makai">
<meta name="description" content="Get recommendations for dozens of great programming tutorials via Full Stack Python's Best Python Resources page.">
<link rel="shortcut icon" href="/img/fsp-fav.png">
<title>Best Python Resources - Full Stack Python</title>
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<link href="/theme/css/f.min.css" rel="stylesheet">
</head>
<body>
<div style="padding: 0 0 20px 0; margin: 0 0 20px 0; background-color: #22B24C;">
<div class="container">
<p class="banner"><a href="https://www.kickstarter.com/projects/mikeckennedy/python-for-entrepreneurs-video-course" style="color: #fff">Use Python to build your side business with the Python for Entrepreneurs video course!</a></p>
</div>
</div> <a href="https://github.com/makaimc/fullstackpython.com"><img style="position: absolute; top: 0; right: 0; border: 0;" src="/img/fork.png" alt="Fork me on GitHub"></a>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="logo-header-section">
<a href="/" style="text-decoration: none; border: none;"><img src="/img/logo.png" height="52" width="52" class="logo-image" style="padding-top: 1px;" alt="Full Stack Python logo"></a>
<span class="logo-title"><a href="https://www.fullstackpython.com/">Full Stack Python</a></span>
</div>
<div class="subnav">
<!--<a href="/blog.html" class="submenu-item-first">Blog</a> |
<a href="/books.html" class="submenu-item">Books</a> | -->
<a href="/table-of-contents.html" class="submenu-item-first">All topics</a> |
<a href="/blog.html" class="submenu-item">Blog</a> |
<a href="/email.html" class="submenu-item">Newsletter</a> |
<a href="https://twitter.com/fullstackpython" class="submenu-item">@fullstackpython</a> |
<a href="https://www.facebook.com/fullstackpython" class="submenu-item">Facebook</a> |
<a href="https://github.com/makaimc/fullstackpython.com/tree/gh-pages/source" class="submenu-item">Source</a>
</div> </div>
</div><div class="row">
<div class="col-md-8">
<h1>Best Python Resources</h1>
<p>The Python community is amazing at sharing detailed resources and helping
beginners learn to program with the language. There are so many resources
out there though that it can be difficult to know how to find them. </p>
<p>This page aggregates the best general Python resources with descriptions of
what they provide to readers.</p>
<div class="well see-also">If you prefer to learn by watching videos check out the <a href="/best-python-videos.html">best Python videos</a>. You may also be interested in reading about <a href="/development-environments.html">development environments</a> to use for coding.</div>
<h2>New to programming</h2>
<p>If you're learning your first programming language these books were written
with you in mind. Developers learning Python as a second or later language
should skip down to the next section for "experienced developers".</p>
<ul>
<li>
<p>To get an introduction to Python, Django and Flask at the same time,
consider purchasing the
<a href="https://realpython.com/?utm_source=fsp&utm_medium=promo&utm_campaign=bestresources">Real Python</a>
course by Fletcher, Michael and Jeremy.</p>
</li>
<li>
<p>This <a href="https://www.youtube.com/watch?v=mvK0UzFNw1Q">short 5 minute video</a>
explains why it's better to think of projects you'd like to build and
problems you want to solve with programming. Start working on those projects
and problems rather than jumping into a specific language that's recommended
to you by a friend.</p>
</li>
<li>
<p><a href="http://www.cs.hmc.edu/csforall/">CS for All</a> is an open book by professors
at Harvey Mudd College which teaches the fundamentals of computer science
using Python. It's an accessible read and perfect for programming beginners.</p>
</li>
<li>
<p>If you've never programmed before check out the
<a href="http://learntocodewith.me/getting-started/">Getting Started</a> page on
<a href="http://learntocodewith.me/">Learn To Code with Me</a>
by <a href="https://twitter.com/lebdev">Laurence Bradford</a>. She's done an
incredible job of breaking down the steps beginners should take when
they're uncertain about where to begin.</p>
</li>
<li>
<p><a href="http://learnpythonthehardway.org/book/">Learn Python the Hard Way</a> is a
free book by Zed Shaw.</p>
</li>
<li>
<p>The <a href="https://www.twilio.com/blog/tag/python">Python projects tag</a> on the
Twilio blog is constantly updated with fun tutorials you can build to
learn Python, such as the
<a href="https://www.twilio.com/blog/2015/11/international-space-station-notifications-with-python-redis-queue-and-twilio-copilot.html">International Space Station Tracker with Flask and Redis-Queue</a>,
<a href="https://www.twilio.com/blog/2014/11/choose-your-own-adventure-presentations-with-reveal-js-python-and-websockets.html">Choose Your Own Adventures Presentations using Flask and WebSockets</a>
and <a href="https://www.twilio.com/blog/2015/11/getting-started-with-opencv-and-python-featuring-the-martian-2.html">Martianify Photos with OpenCV</a>.</p>
</li>
<li>
<p><a href="http://www.swaroopch.com/notes/python/">A Byte of Python</a> is a beginner's
tutorial for the Python language. </p>
</li>
<li>
<p>Code Academy has a <a href="http://www.codecademy.com/tracks/python">Python track</a>
for people completely new to programming.</p>
</li>
<li>
<p><a href="http://opentechschool.github.io/python-beginners/en/index.html">Introduction to Programming with Python</a>
goes over the basic syntax and control structures in Python. The free book
has numerous code examples to go along with each topic.</p>
</li>
<li>
<p>Google put together a great compilation of materials and subjects you
should read and learn from if you want to be a
<a href="https://www.google.com/about/careers/students/guide-to-technical-development.html">professional programmer</a>.
Those resources are useful not only for Python beginners but any developer
who wants to have a strong professional career in software.</p>
</li>
<li>
<p>The O'Reilly book
<a href="http://greenteapress.com/thinkpython/html/index.html">Think Python: How to Think Like a Computer Scientist</a>
is available in HTML form for free on the web.</p>
</li>
<li>
<p><a href="http://anandology.com/python-practice-book/index.html">Python Practice Book</a>
is a book of Python exercises to help you learn the basic language syntax.</p>
</li>
<li>
<p>Looking for ideas about what projects to use to learn to code? Check out
<a href="https://medium.com/learning-journalism-tech/five-mini-programming-projects-for-the-python-beginner-21492f6ce0f3">this list of 5 programming projects for Python beginners</a>.</p>
</li>
<li>
<p>There's a Udacity course by one of the creators of Reddit that shows how to
<a href="https://www.udacity.com/course/web-development--cs253">use Python to build a blog</a>.
It's a great introduction to web development concepts through coding.</p>
</li>
<li>
<p>I wrote a quick blog post on
<a href="http://www.mattmakai.com/learning-python-for-non-developers.html">learning Python</a>
that non-technical folks trying to learn to program may find useful.</p>
</li>
<li>
<p><a href="http://pymbook.readthedocs.org/en/latest/">Python for you and me</a> is an
approachable book with sections for Python syntax and the major language
constructs. The book also contains a short guide at the end to get
programmers to write their first Flask web application.</p>
</li>
</ul>
<h2>Python for specific occupations</h2>
<p>Python is powerful for many professions. If you're seeking to use Python in a
specific field, one of these guides may be the most appropriate for you.</p>
<ul>
<li>
<p><a href="http://www-rohan.sdsu.edu/~gawron/python_for_ss/">Python for Social Scientists</a>
contains a textbook, course outline and slides for a college course that taught
social scientists to use Python for their profession.</p>
</li>
<li>
<p><a href="http://pbpython.com/">Practical Business Python</a> is a blog that covers topics
such as how to automate generating large Excel spreadsheets or perform analysis
when your data is locked in Microsoft Office files.</p>
</li>
<li>
<p><a href="http://fbkarsdorp.github.io/python-course/">Python for the Humanities</a> is a
textbook and course on the basics of Python and text processing. Note if you've
never worked with Python before the material ramps up quickly after the first
chapter so you will likely want to combine it with some other introduction to
Python resources.</p>
</li>
<li>
<p><a href="https://python4astronomers.github.io/">Practical Python for Astronomers</a>
provides open source workshop materials for teaching students studying
astronomy to use Python for data analysis.</p>
</li>
</ul>
<h2>Experienced developers new to Python</h2>
<p>If you can already program in another language, these resources are better for
getting up to speed because they are more concise when explaining introductory
topics.</p>
<ul>
<li>
<p><a href="http://learnxinyminutes.com/docs/python/">Learn Python in y minutes</a>
provides a whirlwind tour of the Python language. The guide is especially
useful if you're coming in with previous software development experience
and want to quickly grasp how the language is structured.</p>
</li>
<li>
<p>Developers familiar with other languages often have difficulty adapting to
accepted Python code style. Make sure to read the
<a href="https://www.python.org/dev/peps/pep-0008/">PEP8</a> code style guidelines
as well as
<a href="https://github.com/amontalenti/elements-of-python-style">The Elements of Python Style</a>
to know the Python community standards.</p>
</li>
<li>
<p><a href="https://districtdatalabs.silvrback.com/how-to-develop-quality-python-code">How to Develop Quality Python Code</a>
is a good read to begin learning about development environments,
application dependencies and project structure.</p>
</li>
<li>
<p>The <a href="https://pymotw.com/2/contents.html">Python module of the week</a>
chapters are a good way to get up to speed with the standard library.
Doug Hellmann is also now updating the list for changes brought about
from the upgrade to Python 3 from 2.x.</p>
</li>
<li>
<p>Kenneth Reitz's
<a href="http://docs.python-guide.org/en/latest/">The Hitchhiker’s Guide to Python</a>
contains a wealth of information both on the Python programming language and the community.</p>
</li>
<li>
<p><a href="http://composingprograms.com/">Composing Programs</a> shows how to build
compilers with Python 3, which is a good undertaking if you're looking
to learn both more about the Python language and how compiles work.</p>
</li>
<li>
<p><a href="http://jessenoller.com/good-to-great-python-reads/">Good to Great Python Reads</a>
is a collection of intermediate and advanced Python articles around the web
focused on nuances and details of the Python language itself.</p>
</li>
</ul>
<h2>Videos, screencasts and presentations</h2>
<p>Videos from conferences and meetups along with screencasts are listed on
the <a href="/best-python-videos.html">best Python videos</a> page.</p>
<h2>Curated Python packages lists</h2>
<ul>
<li>
<p><a href="https://github.com/vinta/awesome-python">awesome-python</a> is an incredible
list of Python frameworks, libraries and software. I wish I had this
page when I was just getting started. </p>
</li>
<li>
<p><a href="http://easy-python.readthedocs.org/en/latest/">easy-python</a> is like
awesome-python although instead of just a Git repository this site is
in the Read the Docs format.</p>
</li>
</ul>
<h2>Podcasts</h2>
<ul>
<li>
<p><a href="http://www.talkpythontome.com/">Talk Python to Me</a> focuses on the
people and organizations coding on Python. Each episode features a
different guest interviewee to talk about his or her work.</p>
</li>
<li>
<p><a href="http://podcastinit.com/">Podcast.__init__</a> is another podcast on
"about Python and the people who make it great".</p>
</li>
</ul>
<h2>Newsletters</h2>
<ul>
<li>
<p><a href="http://www.pythonweekly.com/">Python Weekly</a> is a free weekly roundup
of the latest Python articles, videos, projects and upcoming events.</p>
</li>
<li>
<p><a href="http://pycoders.com/">PyCoder's Weekly</a> is another great free weekly
email newsletter similar to Python Weekly. The best resources are generally
covered in both newsletters but they often cover different articles
and projects from around the web.</p>
</li>
<li>
<p><a href="http://importpython.com/newsletter/">Import Python</a> is a newer newsletter
than Python Weekly and PyCoder's Weekly. So far I've found this newsletter
often pulls from different sources than the other two. It's well worth
subscribing to all three so you don't miss anything.</p>
</li>
<li>
<p>The <a href="https://www.fullstackpython.com/email.html">Full Stack Python monthly newsletter</a>
is a monthly newsletter that focuses on a single topic each month. For
example, one month will aggregate great Flask resources, while another
month will provide WSGI server configurations.</p>
</li>
</ul>
<h3>Those resources should help you get started. What's next?</h3>
<div class="row">
<div class="col-md-4">
<div class="well select-next">
<a href="/web-frameworks.html" class="btn btn-success btn-full"><svg width="28" height="30" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M553 1399l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23t-10 23l-393 393 393 393q10 10 10 23t-10 23zm591-1067l-373 1291q-4 13-15.5 19.5t-23.5 2.5l-62-17q-13-4-19.5-15.5t-2.5-24.5l373-1291q4-13 15.5-19.5t23.5-2.5l62 17q13 4 19.5 15.5t2.5 24.5zm657 651l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23t-10 23z" fill="#fff"/></svg></a>
<p class="under-btn">I want to learn how to code a Python web application using a framework.</p> </div>
</div>
<div class="col-md-4">
<div class="well select-next">
<a href="/deployment.html" class="btn btn-success btn-full"><svg width="28" height="30" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 640q0 26-19 45l-512 512q-19 19-45 19t-45-19-19-45v-256h-224q-98 0-175.5 6t-154 21.5-133 42.5-105.5 69.5-80 101-48.5 138.5-17.5 181q0 55 5 123 0 6 2.5 23.5t2.5 26.5q0 15-8.5 25t-23.5 10q-16 0-28-17-7-9-13-22t-13.5-30-10.5-24q-127-285-127-451 0-199 53-333 162-403 875-403h224v-256q0-26 19-45t45-19 45 19l512 512q19 19 19 45z" fill="#fff"/></svg></a>
<p class="under-btn">I've built a Python web app, now how do I deploy it?</p> </div>
</div>
<div class="col-md-4">
<div class="well select-next">
<a href="/development-environments.html" class="btn btn-success btn-full"><svg width="34" height="30" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 992v-832q0-13-9.5-22.5t-22.5-9.5h-1600q-13 0-22.5 9.5t-9.5 22.5v832q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5zm128-832v1088q0 66-47 113t-113 47h-544q0 37 16 77.5t32 71 16 43.5q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45q0-14 16-44t32-70 16-78h-544q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1600q66 0 113 47t47 113z" fill="#fff"/></svg></a>
<p class="under-btn">What editor should I use to code my Python app?</p> </div>
</div>
</div><div id="mc_embed_signup">
<form action="//mattmakai.us2.list-manage.com/subscribe/post?u=b7e774f0c4f05dcebbfee183d&id=b22335388d" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<div id="mc_embed_signup_scroll">
<h4>Sign up here to receive a monthly email with major updates to this site, tutorials and discount codes for Python books.</h4>
<div class="row">
<div class="col-md-9">
<input type="email" value="" name="EMAIL" class="email form-control" id="mce-EMAIL" placeholder="email address" required>
<div style="position: absolute; left: -5000px;"><input type="text" name="b_b7e774f0c4f05dcebbfee183d_b22335388d" tabindex="-1" value=""></div>
</div>
<div class="col-md-3">
<div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="btn btn-success" style="font-family: 'Helvetica Neue';"></div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="col-md-offset-1 col-md-3" id="sidebar">
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-head">Sponsored By</h3>
</div>
<div class="panel-body">
<a href="https://realpython.com/?utm_source=fsp&utm_medium=promo&utm_campaign=bestresources"><img src="/img/sponsored/realpython.jpg" alt="Real Python logo" width="100%"></a>
<p style="font-size: .8em;">If you want to learn Python then
I highly recommend
<a href="https://realpython.com/?utm_source=fsp&utm_medium=promo&utm_campaign=bestresources" onclick="trackOutboundLink('https://realpython.com/?utm_source=fsp&utm_medium=promo&utm_campaign=bestresources'); return false;">checking out Real Python</a>'s
courses.
</p>
</div>
</div>
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-head">Email Updates</h3>
</div>
<div class="panel-body">
<div id="mc_embed_signup">
<form action="//mattmakai.us2.list-manage.com/subscribe/post?u=b7e774f0c4f05dcebbfee183d&id=b22335388d" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<div id="mc_embed_signup_scroll">
<h5>Sign up to get a monthly email with Python tutorials and major updates to this site.</h5>
<input type="email" value="" name="EMAIL" class="email form-control" id="mce-EMAIL" placeholder="email address" required>
<div style="position: absolute; left: -5000px;"><input type="text" name="b_b7e774f0c4f05dcebbfee183d_b22335388d" tabindex="-1" value=""></div>
<input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="btn btn-success" style="font-family: 'Helvetica Neue'; margin-top: 5px;">
</div>
</form>
</div>
</div>
</div><div class="panel panel-success" id="full-toc">
<div class="panel-heading">
<h3 class="panel-head"><a href="/table-of-contents.html" style="color: #fff;">Table of Contents</a></h3>
</div>
<div class="list-group">
<a href="/introduction.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>1. Introduction</a><a href="/learning-programming.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Learning Programming</a><a href="/why-use-python.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Why Use Python?</a><a href="/python-2-or-3.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Python 2 or 3?</a><a href="/enterprise-python.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Enterprise Python</a><a href="/best-python-resources.html" class="list-group-item smaller-item active" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Best Python Resources</a><a href="/best-python-videos.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Best Python Videos</a><a href="/development-environments.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>2. Development Environments</a><a href="/vim.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Vim</a><a href="/emacs.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Emacs</a><a href="/python-programming-language.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>3. Core Language</a><a href="/generators.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Generators</a><a href="/comprehensions.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Comprehensions</a><a href="/web-development.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>4. Web Development</a><a href="/web-frameworks.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Web Frameworks</a><a href="/django.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Django</a><a href="/flask.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Flask</a><a href="/bottle.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Bottle</a><a href="/pyramid.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Pyramid</a><a href="/morepath.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Morepath</a><a href="/other-web-frameworks.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Other Web Frameworks</a><a href="/web-design.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Web Design</a><a href="/cascading-style-sheets.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Cascading Style Sheets (CSS)</a><a href="/javascript.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>JavaScript</a><a href="/websockets.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>WebSockets</a><a href="/template-engines.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Template Engines</a><a href="/web-application-security.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Web Application Security</a><a href="/static-site-generator.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Static Site Generators</a><a href="/jinja2.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Jinja2</a><a href="/data.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>5. Data</a><a href="/databases.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Relational Databases</a><a href="/no-sql-datastore.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>NoSQL Data Stores</a><a href="/object-relational-mappers-orms.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Object-relational Mappers</a><a href="/postgresql.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>PostgreSQL</a><a href="/mysql.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>MySQL</a><a href="/sqlite.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>SQLite</a><a href="/application-programming-interfaces.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>6. Web APIs</a><a href="/api-integration.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>API Integration</a><a href="/api-creation.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>API Creation</a><a href="/deployment.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>7. Deployment</a><a href="/servers.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Servers</a><a href="/platform-as-a-service.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Platform-as-a-Service</a><a href="/operating-systems.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Operating Systems</a><a href="/web-servers.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Web Servers</a><a href="/wsgi-servers.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>WSGI Servers</a><a href="/source-control.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Source Control</a><a href="/application-dependencies.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Application Dependencies</a><a href="/static-content.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Static Content</a><a href="/task-queues.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Task Queues</a><a href="/configuration-management.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Configuration Management</a><a href="/continuous-integration.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Continuous Integration</a><a href="/logging.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Logging</a><a href="/monitoring.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Monitoring</a><a href="/web-analytics.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Web Analytics</a><a href="/docker.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Docker</a><a href="/caching.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Caching</a><a href="/microservices.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Microservices</a><a href="/devops.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>DevOps</a><a href="/nginx.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Nginx</a><a href="/apache-http-server.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Apache HTTP Server</a><a href="/caddy.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Caddy</a><a href="/green-unicorn-gunicorn.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Green Unicorn (Gunicorn)</a><a href="/ubuntu.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Ubuntu</a><a href="/testing.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>8. Testing</a><a href="/unit-testing.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Unit Testing</a><a href="/integration-testing.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Integration Testing</a><a href="/code-metrics.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Code Metrics</a><a href="/debugging.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Debugging</a><a href="/bots.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Bots</a><a href="/what-full-stack-means.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif;'>9. Meta</a><a href="/change-log.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Change Log</a><a href="/future-directions.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>Future Directions</a><a href="/about-author.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",sans-serif; padding-left: 27px;'>About the Author</a> <a href="/table-of-contents.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",san-serif;background-color:#22B24C; color: #fff;'>...or <span style="border-bottom: 1px dotted;">view the full table of contents</span>.</a>
</div>
</div> <div class="panel panel-success">
<div class="panel-heading"><h3 class="panel-head">Best Python Resources</h3></div>
<div class="panel-body">
Major updates are tweeted via
<a href="https://twitter.com/fullstackpython">@fullstackpython</a>.
<hr/>
Need more detailed tutorials than you see here?
<a href="http://www.deploypython.com/">Learn more about The Full Stack Python Guide to Deployments book.</a>
</div>
</div>
<div class="panel panel-success" id="mobile-toc">
<div class="panel-heading">
<h3 class="panel-head"><a href="/table-of-contents.html" style="color: #fff;">Chapters</a></h3>
</div>
<div class="list-group">
<a href="/introduction.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>1. Introduction</a> <a href="/best-python-resources.html" class="list-group-item smaller-item active" style='font-family: "Helvetica Neue",sans-serif;'>» Best Python Resources</a>
<a href="/development-environments.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>2. Development Environments</a><a href="/python-programming-language.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>3. Core Language</a><a href="/web-development.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>4. Web Development</a><a href="/data.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>5. Data</a><a href="/application-programming-interfaces.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>6. Web APIs</a><a href="/deployment.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>7. Deployment</a><a href="/testing.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>8. Testing</a><a href="/what-full-stack-means.html" class="list-group-item smaller-item " style='font-family: "Helvetica Neue",sans-serif;'>9. Meta</a> <a href="/table-of-contents.html" class="list-group-item smaller-item" style='font-family: "Helvetica Neue",san-serif;background-color:#22B24C; color: #fff;'>...or <span style="border-bottom: 1px dotted;">view the full table of contents</span>.</a>
</div>
</div></div></div>
<hr/>
</div>
<div class="container">
<div class="footer pull-right">
<a href="http://www.mattmakai.com/" class="underline">Matt Makai</a>
2016
</div>
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-19910497-7', 'auto');
ga('send', 'pageview');
</script>
<script type='text/javascript'>
var trackOutboundLink = function(url) { ga('send', 'event', 'outbound', 'click', url, {'hitCallback': function () { document.location = url; } }); }
</script>
</body>
</html>