@@ -22,7 +22,7 @@ installation so applications are easier for developers to create. | |||
| 22 | 22 | ||
| 23 | 23 | ## Finding libraries | |
| 24 | 24 | Python libraries are stored in a central location known as the | |
| 25 | - [Python Package Index](https://pypi.python.org/pypi) (PyPi). PyPi contains | ||
| 25 | + [Python Package Index](https://pypi.org/). PyPi contains | ||
| 26 | 26 | search functionality with results weighted by usage and relevance based on | |
| 27 | 27 | keyword terms. | |
| 28 | 28 | ||
@@ -121,6 +121,10 @@ further clarification. | |||
| 121 | 121 | ||
| 122 | 122 | ||
| 123 | 123 | ### Application dependency resources | |
| 124 | + The following links provide advice on how to use Python packages as well | ||
| 125 | + as package your own dependencies for projects or consumption by other | ||
| 126 | + developers. | ||
| 127 | + | ||
| 124 | 128 | * [Python Packaging Is Good Now](https://glyph.twistedmatrix.com/2016/08/python-packaging.html) | |
| 125 | 129 | is a wonderfully written blog post. It provides historical context on why | |
| 126 | 130 | Python's code library packaging was painful for a long time, and what's | |
@@ -135,19 +139,17 @@ further clarification. | |||
| 135 | 139 | is an amazing post that takes the reader from simple Python script | |
| 136 | 140 | into a complete Python package. | |
| 137 | 141 | ||
| 138 | - * [Jon Chu](https://twitter.com/jonathanchu) wrote a great introduction on | ||
| 139 | - [virtualenv and pip basics](http://jonathanchu.is/posts/virtualenv-and-pip-basics/). | ||
| 140 | - | ||
| 141 | 142 | * [A non-magical introduction to virtualenv and pip](http://dabapps.com/blog/introduction-to-pip-and-virtualenv-python/) | |
| 142 | 143 | breaks down what problems these tools solve and how to use them. | |
| 143 | 144 | ||
| 145 | + * [There’s no magic: virtualenv edition](https://www.recurse.com/blog/14-there-is-no-magic-virtualenv-edition) | ||
| 146 | + breaks open the virtual environment "black box" to show you what the | ||
| 147 | + tool is doing when you use its commands. | ||
| 148 | + | ||
| 144 | 149 | * [Testing & Packaging](https://hynek.me/articles/testing-packaging/) examines | |
| 145 | 150 | a configuration for ensuring tests run against your code and how to | |
| 146 | 151 | properly package your project. | |
| 147 | 152 | ||
| 148 | - * [Tools of the modern Python hacker](http://www.clemesha.org/blog/modern-python-hacker-tools-virtualenv-fabric-pip/) | ||
| 149 | - contains detailed explanations of virtualenv, Fabric, and pip. | ||
| 150 | - | ||
| 151 | 153 | * Occasionally arguments about using Python's dependency manager versus | |
| 152 | 154 | one of Linux's dependency managers comes up. This provides | |
| 153 | 155 | [one perspective on that debate](http://notes.pault.ag/debian-python/). | |
@@ -158,16 +160,6 @@ further clarification. | |||
| 158 | 160 | [left-pad NPM situation](https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c) | |
| 159 | 161 | that broke many dependent packages in the Node.js community. | |
| 160 | 162 | ||
| 161 | - * This Stack Overflow question details how to set up a | ||
| 162 | - [virtual environment for Python development](http://askubuntu.com/questions/244641/how-to-set-up-and-use-a-virtual-python-environment-in-ubuntu). | ||
| 163 | - | ||
| 164 | - * Another Stack Overflow page answers | ||
| 165 | - [how to set environment variables when using virtualenv](http://stackoverflow.com/questions/9554087/setting-an-environment-variable-in-virtualenv). | ||
| 166 | - | ||
| 167 | - * [Tips for using pip + virtualenv + virtualenvwrapper](http://mrcoles.com/tips-using-pip-virtualenv-virtualenvwrapper/) | ||
| 168 | - shows how to use shell aliases and postactivate virtualenvwrapper hooks to | ||
| 169 | - make life easier when using these tools. | ||
| 170 | - | ||
| 171 | 163 | * Major speed improvements were made in pip 7 over previous versions. Read | |
| 172 | 164 | [this article about the differences](https://lincolnloop.com/blog/fast-immutable-python-deployments/) | |
| 173 | 165 | and be sure to upgrade. | |
@@ -184,14 +176,33 @@ further clarification. | |||
| 184 | 176 | and how to get around them until they are smoothed out by updates to the | |
| 185 | 177 | tools. | |
| 186 | 178 | ||
| 179 | + * [The Many Layers of Packaging](https://sedimental.org/the_packaging_gradient.html) | ||
| 180 | + goes up and down the packaging stack and even covers bits about virtual | ||
| 181 | + environments and security. It's well worth investing some time to read | ||
| 182 | + this post to get an overview of the many layers involved in dependency | ||
| 183 | + packaging. | ||
| 184 | + | ||
| 185 | + * [How to Publish Your Package on PyPI](https://blog.jetbrains.com/pycharm/2017/05/how-to-publish-your-package-on-pypi/) | ||
| 186 | + is for developers who have created a code library they would like to | ||
| 187 | + share and make installable for other developers. | ||
| 188 | + | ||
| 187 | 189 | ||
| 188 | 190 | ### Open source app dependency projects | |
| 191 | + [pip and venv](https://docs.python.org/3/library/venv.html) are part of | ||
| 192 | + Python 3's standard library as of version 3.3. However, there are numerous | ||
| 193 | + other open source libraries that can be helpful when managing application | ||
| 194 | + dependencies in your projects, as listed below. | ||
| 195 | + | ||
| 189 | 196 | * [Autoenv](https://github.com/kennethreitz/autoenv) is a tool for activating | |
| 190 | 197 | environment variables stored in a `.env` file in your projects' home | |
| 191 | 198 | directories. Environment variables aren't managed by virtualenv and although | |
| 192 | 199 | virtualenvwrapper has some hooks for handling them, it's often easiest to | |
| 193 | 200 | use a shell script or `.env` file to set them in a development environment. | |
| 194 | 201 | ||
| 202 | + * [Pipenv](https://pipenv.readthedocs.io/en/latest/) is a newer Python | ||
| 203 | + packaging and dependency management library that has seen some adoption | ||
| 204 | + in place of the standard `pip` library. | ||
| 205 | + | ||
| 195 | 206 | * [Pipreqs](https://github.com/bndr/pipreqs) searches through a project for | |
| 196 | 207 | dependencies based on imports. It then generates a `requirements.txt` file | |
| 197 | 208 | based on the libraries necessary to run those dependencies. Note though that | |
@@ -48,6 +48,12 @@ many other topics. The following resources provide a range of perspectives | |||
| 48 | 48 | and when combined together should get you oriented in the web development | |
| 49 | 49 | world. | |
| 50 | 50 | ||
| 51 | + * [How the Internet works](https://thesquareplanet.com/blog/how-the-internet-works/) | ||
| 52 | + is a must-read to get a quick overview of all the pieces that go into | ||
| 53 | + a network connection from one machine to another. The example explains how | ||
| 54 | + an email is sent and the story is just as useful for learning about other | ||
| 55 | + connections such as downloading a webpage. | ||
| 56 | + | ||
| 51 | 57 | * If you want to be a web developer it's important to know the foundational | |
| 52 | 58 | tools used to build websites and web applications. It is also important to | |
| 53 | 59 | understand that the core concepts such as | |
@@ -124,6 +130,10 @@ world. | |||
| 124 | 130 | from disparate locations to see what the network speed is in fiber optic | |
| 125 | 131 | cables as a percentage of the speed of light. | |
| 126 | 132 | ||
| 133 | + * [The critical path: optimizing load times with the Chrome DevTools](https://www.lucidchart.com/techblog/2018/03/13/the-critical-path-optimizing-load-times-with-the-chromedev-tools/) | ||
| 134 | + provides a well-written explanation about using Chrome's developer | ||
| 135 | + features to improve the performance of your websites and web applications. | ||
| 136 | + | ||
| 127 | 137 | * [Three takeaways for web developers after two weeks of painfully slow Internet](https://medium.com/@zengabor/three-takeaways-for-web-developers-after-two-weeks-of-painfully-slow-internet-9e7f6d47726e) | |
| 128 | 138 | is a must-read for every web developer. Not everyone has fast Internet | |
| 129 | 139 | service, whether because they are in a remote part of the world or they're | |
0 commit comments