Skip to content

Commit ea9f870

Browse files
committed
split a section of app dependency page for easier reading
1 parent a9d9e80 commit ea9f870

File tree

1 file changed

+68
-54
lines changed

1 file changed

+68
-54
lines changed

content/pages/02-development-environments/15-application-dependencies.markdown

Lines changed: 68 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -120,17 +120,74 @@ requirements.txt and setup.py, so read this
120120
further clarification.
121121

122122

123+
### Open source app dependency projects
124+
[pip and venv](https://docs.python.org/3/library/venv.html) are part of
125+
Python 3's standard library as of version 3.3. However, there are numerous
126+
other open source libraries that can be helpful when managing application
127+
dependencies in your projects, as listed below.
128+
129+
* [Autoenv](https://github.com/kennethreitz/autoenv) is a tool for activating
130+
environment variables stored in a `.env` file in your projects' home
131+
directories. Environment variables aren't managed by virtualenv and although
132+
virtualenvwrapper has some hooks for handling them, it's often easiest to
133+
use a shell script or `.env` file to set them in a development environment.
134+
135+
* [Pipenv](https://pipenv.readthedocs.io/en/latest/) is a newer Python
136+
packaging and dependency management library that has seen some adoption
137+
in place of the standard `pip` library.
138+
139+
* [Pipreqs](https://github.com/bndr/pipreqs) searches through a project for
140+
dependencies based on imports. It then generates a `requirements.txt` file
141+
based on the libraries necessary to run those dependencies. Note though that
142+
while this could come in handy with a legacy project, the version numbers
143+
for those libraries will not be generated with the output.
144+
145+
* [pip-check](https://github.com/bartTC/pip-check) presents a nicely-formatted
146+
list of all your installed dependencies and the status of whether or not
147+
updates are available for each of them.
148+
149+
* [pip-name](https://github.com/prakashdanish/pip-name) is a straightforward
150+
library that looks up package names on PyPI and tells you whether or not
151+
the library name is already taken.
152+
153+
154+
### Code library packaging guides
155+
There are many steps in creating and distributing packages on PyPI and
156+
your own hosted application dependency servers. Many of these steps involve
157+
writing configuration files that are not as well documented as some other
158+
areas of Python development. These resources are the best ones I have found
159+
so far to get up to speed on building and releasing your own packages.
160+
161+
* [Python Packaging User Guide](https://packaging.python.org/)
162+
provides a collection of resources to understand how to package and
163+
distribute Python code libraries.
164+
165+
* [Alice in Python projectland](https://veekaybee.github.io/2017/09/26/python-packaging/)
166+
is an amazing post that takes the reader from simple Python script
167+
into a complete Python package.
168+
169+
* [Perils of packaging](https://malramsay.com/post/perils_of_packaging/)
170+
covers several edge cases that come up when trying to put together
171+
pieces like Travis CI, PyPI and conda. The post walks through the errors
172+
and how to get around them until they are smoothed out by updates to the
173+
tools.
174+
175+
* [How to Publish Your Package on PyPI](https://blog.jetbrains.com/pycharm/2017/05/how-to-publish-your-package-on-pypi/)
176+
is for developers who have created a code library they would like to
177+
share and make installable for other developers.
178+
179+
* [How to Submit a Package to PyPI](https://blog.easyaspy.org/post/14/2019-05-05-how-to-submit-a-package-to-pypi)
180+
presents the basic steps like signing up for a PyPI account and other
181+
accounts that go along with the tutorial. It then walks through the
182+
configuration code for setting up continuous integration and deploying
183+
your package.
184+
185+
123186
### Application dependency resources
124187
The following links provide advice on how to use Python packages as well
125188
as package your own dependencies for projects or consumption by other
126189
developers.
127190

128-
* [Python Packaging Is Good Now](https://glyph.twistedmatrix.com/2016/08/python-packaging.html)
129-
is a wonderfully written blog post. It provides historical context on why
130-
Python's code library packaging was painful for a long time, and what's
131-
been fixed to make building and installing application dependencies so
132-
much better.
133-
134191
* [Python's New Package Landscape](http://andrewsforge.com/article/python-new-package-landscape/)
135192
covers the history of Python packaging tools and examines the
136193
problems with dependency isolation and the dependency graphs that
@@ -141,13 +198,11 @@ developers.
141198
[pipsi](https://github.com/mitsuhiko/pipsi)
142199
aim to solve.
143200

144-
* [Python Packaging User Guide](https://packaging.python.org/)
145-
provides a collection of resources to understand how to package and
146-
distribute Python code libraries.
147-
148-
* [Alice in Python projectland](https://veekaybee.github.io/2017/09/26/python-packaging/)
149-
is an amazing post that takes the reader from simple Python script
150-
into a complete Python package.
201+
* [Python Packaging Is Good Now](https://glyph.twistedmatrix.com/2016/08/python-packaging.html)
202+
is a wonderfully written blog post. It provides historical context on why
203+
Python's code library packaging was painful for a long time, and what's
204+
been fixed to make building and installing application dependencies so
205+
much better.
151206

152207
* [A non-magical introduction to virtualenv and pip](http://dabapps.com/blog/introduction-to-pip-and-virtualenv-python/)
153208
breaks down what problems these tools solve and how to use them.
@@ -185,53 +240,12 @@ developers.
185240
either confuses a fake package for the correct one or simply makes a
186241
typo when specifying her dependency list.
187242

188-
* [Perils of packaging](https://malramsay.com/post/perils_of_packaging/)
189-
covers several edge cases that come up when trying to put together
190-
pieces like Travis CI, PyPI and conda. The post walks through the errors
191-
and how to get around them until they are smoothed out by updates to the
192-
tools.
193-
194243
* [The Many Layers of Packaging](https://sedimental.org/the_packaging_gradient.html)
195244
goes up and down the packaging stack and even covers bits about virtual
196245
environments and security. It's well worth investing some time to read
197246
this post to get an overview of the many layers involved in dependency
198247
packaging.
199248

200-
* [How to Publish Your Package on PyPI](https://blog.jetbrains.com/pycharm/2017/05/how-to-publish-your-package-on-pypi/)
201-
is for developers who have created a code library they would like to
202-
share and make installable for other developers.
203-
204-
205-
### Open source app dependency projects
206-
[pip and venv](https://docs.python.org/3/library/venv.html) are part of
207-
Python 3's standard library as of version 3.3. However, there are numerous
208-
other open source libraries that can be helpful when managing application
209-
dependencies in your projects, as listed below.
210-
211-
* [Autoenv](https://github.com/kennethreitz/autoenv) is a tool for activating
212-
environment variables stored in a `.env` file in your projects' home
213-
directories. Environment variables aren't managed by virtualenv and although
214-
virtualenvwrapper has some hooks for handling them, it's often easiest to
215-
use a shell script or `.env` file to set them in a development environment.
216-
217-
* [Pipenv](https://pipenv.readthedocs.io/en/latest/) is a newer Python
218-
packaging and dependency management library that has seen some adoption
219-
in place of the standard `pip` library.
220-
221-
* [Pipreqs](https://github.com/bndr/pipreqs) searches through a project for
222-
dependencies based on imports. It then generates a `requirements.txt` file
223-
based on the libraries necessary to run those dependencies. Note though that
224-
while this could come in handy with a legacy project, the version numbers
225-
for those libraries will not be generated with the output.
226-
227-
* [pip-check](https://github.com/bartTC/pip-check) presents a nicely-formatted
228-
list of all your installed dependencies and the status of whether or not
229-
updates are available for each of them.
230-
231-
* [pip-name](https://github.com/prakashdanish/pip-name) is a straightforward
232-
library that looks up package names on PyPI and tells you whether or not
233-
the library name is already taken.
234-
235249

236250
### Application dependencies learning checklist
237251
1. Ensure the libraries your web application depends on are all captured in

0 commit comments

Comments
 (0)