From 59ea5fc885a63292a4551269444527965d74cdce Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sat, 26 May 2018 17:51:25 -0700 Subject: [PATCH 01/23] adding mostly-skeleton overview --- source/overview.rst | 189 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 source/overview.rst diff --git a/source/overview.rst b/source/overview.rst new file mode 100644 index 000000000..2cdc3e8bb --- /dev/null +++ b/source/overview.rst @@ -0,0 +1,189 @@ +================ +Packaging Python +================ + +Python is a general-purpose programming lanaguage, meaning you can use +it for many things. You can build robots or server software or a game +for your friends to play. + +For this reason, the first step in every Python project must be to +think about the project's audience and the corresponding target +environment. Using this information, this overview will guide you to +the packaging technologies best suited to your project. + +It might seem strange to think about packaging before writing code, +but this process does wonders for avoiding headaches later on. + +* Who are your software's users? Are they other developers doing + software development, operations people in a datacenter, or some + less software-savvy group? +* Is your software meant for servers, desktops, or embedded devices? +* Is your software installed individually, or to many computers at once? + +Packaging is all about target environment and deployment +experience. There are many answers to the questions above and each +combination of circumstances has its own solutions. + +Packaging libraries and tools +----------------------------- + +You may have heard about PyPI and ``setup.py`` and wheel files. These +are just a few of the tools Python's ecosystem provides for +distributing Python code to developers. + +The following classes of code are libraries and tools, meant for a +technical audience, in a development setting. Skip ahead to +Application packaging if you're looking for ways to package Python for +a production setting. + +Python modules +^^^^^^^^^^^^^^ + +A Python file, provided it only relies on the standard library, can be +redistributed and reused. You will also need to ensure it's written +for the right version of Python. + +Python source distributions +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If your code consists of multiple Python files, it's usually organized +into a *package*. A package is any directory containing Python files, +as long as one of those files is named ``__init__.py``. + +Because packages consist of multiple files, they are harder to +distribute. Most protocols support transferring only one file at a +time (when was the last time you clicked a link and it downloaded +multiple files?). It's easier to get incomplete transfers, and harder +to guarantee code integrity at the destination. + +So long as your code contains nothing but pure Python code, and you +know your deployment environment supports your version of Python, then +you can use Python's native packaging tools to create a *source +distribution*, or *sdist* for short. + +Python's *sdists* are compressed archives (``.tar.gz`` files) +containing one or more packages or modules. If your code is +pure-Python, and you only depend on other Python packages, you can `go +here to learn more`_. + +If you rely on any non-Python code, or non-Python packages (such as +libxml2 in the case of lxml, or BLAS libraries in the case of numpy), +you will want to read on. + +.. TODO: "Did you know?" about distributions providing multiple + versions of the same package. Python packaging superpower! + +Python binary distribution +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Python's real power comes from its ability to integrate with the +software ecosystem, in particular libraries written in C, C++, +Fortran, Rust, and other languages. This is why wheels exist. + + +Packaging Applications +---------------------- + +So far we've only discussed Python-native distribution. Based on our +introduction, you would be correct to infer we're only targeting +environments which have Python. More importantly we're assuming an +audience who knows how to install Python packages. + +With the variety of operating systems, configurations, and people out +there, this assumption is only safe when targeting a developer +audience. + +Python's native packaging is mostly built for distributing reusable +code, called libraries, between developers. We can piggyback +**tools**, or basic applications for developers, on top of Python's +library packaging, using technologies like `setuptools entry_points + Date: Wed, 30 May 2018 12:47:01 -0700 Subject: [PATCH 02/23] draft talk about frameworks/platforms --- source/overview.rst | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 2cdc3e8bb..3471dac2e 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -107,8 +107,22 @@ The best way to organize these application packaging options is by the way they depend on the target environment. That's how we'll approach the coming sections. -Depending on a service platform -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Depending on a framework +^^^^^^^^^^^^^^^^^^^^^^^^ + +Some types of Python applications, like web sites and services, are +common enough that they have frameworks to enable their development +and packaging. Other types of applications, like web and mobile +clients, are advanced enough that the framework is more or less a +necessity. + +In all these cases, it makes sense to work backwards, from the +framework's packaging and deployment story. Frameworks wrap the +technologies outlined in the rest of the guide, and can make your +production experience easier and more reliable. + +Service platforms +***************** If you're developing a "Platform-as-a-Service" or "PaaS" like Heroku or Google App Engine, you are going to want to follow their respective @@ -127,6 +141,25 @@ below. If you're developing software that will be deployed to machines you own, users' personal computers, or any other arrangement, read on. +Web and mobile platforms +************************ + +Python's advances are leading it into new spaces. These days you can +write a mobile app or web application frontend in Python. While the +language may be familiar, the packaging and deployment practices are +brand new. + +If you're using one of the following frameworks, you'll want to refer +to their packaging guides: + +* Kivy +* Brython +* Beeware + +If you are *not* interested in using a framework or platform, or just +wonder about some of the technologies and techniques utilized by the +frameworks above, continue reading below. + Depending on a pre-installed Python ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 37d6422d8507e64d6f98dde3e46b68f577a6a765 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Wed, 30 May 2018 19:13:19 -0700 Subject: [PATCH 03/23] expand a little on each section --- source/overview.rst | 52 +++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 3471dac2e..b8ab95cc0 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -64,7 +64,7 @@ distribution*, or *sdist* for short. Python's *sdists* are compressed archives (``.tar.gz`` files) containing one or more packages or modules. If your code is pure-Python, and you only depend on other Python packages, you can `go -here to learn more`_. +here to learn more `_. If you rely on any non-Python code, or non-Python packages (such as libxml2 in the case of lxml, or BLAS libraries in the case of numpy), @@ -84,10 +84,10 @@ Fortran, Rust, and other languages. This is why wheels exist. Packaging Applications ---------------------- -So far we've only discussed Python-native distribution. Based on our -introduction, you would be correct to infer we're only targeting -environments which have Python. More importantly we're assuming an -audience who knows how to install Python packages. +So far we've only discussed Python's native distribution tools. Based +on our introduction, you would be correct to infer we're only +targeting environments which have Python. More importantly we're +assuming an audience who knows how to install Python packages. With the variety of operating systems, configurations, and people out there, this assumption is only safe when targeting a developer @@ -97,7 +97,7 @@ Python's native packaging is mostly built for distributing reusable code, called libraries, between developers. We can piggyback **tools**, or basic applications for developers, on top of Python's library packaging, using technologies like `setuptools entry_points -`_. Generally libraries are building blocks, and not complete applications. For distributing applications, there's a whole world of @@ -107,6 +107,13 @@ The best way to organize these application packaging options is by the way they depend on the target environment. That's how we'll approach the coming sections. +.. TODO: Another way of thinking about packaging solutions is by how + much they include. All solutions include your code, plus some + amount of your code's library and service dependencies. PEX + includes Python libraries. RPM includes a list of dependencies on + libraries and local services. Images can be built to include + everything. + Depending on a framework ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -163,24 +170,41 @@ frameworks above, continue reading below. Depending on a pre-installed Python ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Depending on the host system to have Python installed. Common in +controlled environments like data centers, and local environments of +tech savvy people. Technically includes pretty much every major Linux +and Mac OS version for many years now. + * PEX -* zipapp -* shiv +* zipapp (doesn't include library dependencies, requires Python 3.5+) +* shiv (requires Python 3) Depending on a new Python ecosystem ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Depending on the host system to have an alternative ecosystem +installed, like Anaconda. Increasingly common in academic, analytical, +and other data-oriented environments. Also used in production services. + * conda/Anaconda Bringing your own Python ^^^^^^^^^^^^^^^^^^^^^^^^ +Depending on the host system to be able to run a program in which +we've embedded Python. Operating systems have been designed to run +programs for a very long time, so this approach offers wide +compatibility, if you're willing to work at it. + * Freezers * Omnibus Bringing your own userspace ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Depending on the host system to be able to run a lightweight image in +a relatively modern arrangement often referred to as containerization. + * AppImage * Flatpak * Snappy @@ -189,7 +213,9 @@ Bringing your own userspace Bringing your own kernel ^^^^^^^^^^^^^^^^^^^^^^^^ -Virtualization! +Depending on the host system to have a hypervisor and run a virtual +machine. This type of virtualization is mature and widespread in data +center environments. * Vagrant * AMIs @@ -198,11 +224,11 @@ Virtualization! Bringing your own hardware ^^^^^^^^^^^^^^^^^^^^^^^^^^ -Embedded! +Depending on your host to have electricity. -You can always put your code on an Adafruit or a Micropython, or some -other hardware, and just ship it to the datacenter, or your users' -homes, and call it good. +Embed your code on an Adafruit or a Micropython, or some other +hardware, and just ship it to the datacenter, or your users' homes, +and call it good. What about... ------------- From 3303dbf0c9229264f37046119fa5f8b15fdaaba6 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sun, 3 Jun 2018 16:05:07 -0700 Subject: [PATCH 04/23] address most of @ncoghlan's initial review points at https://github.com/pypa/python-packaging-user-guide/pull/519 --- source/overview.rst | 46 ++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index b8ab95cc0..0e1a61c62 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -47,8 +47,9 @@ Python source distributions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ If your code consists of multiple Python files, it's usually organized -into a *package*. A package is any directory containing Python files, -as long as one of those files is named ``__init__.py``. +into a directory structure. Any directory containing Python files, +provided one of those files is named ``__init__.py``, comprises an +:term:`import package`. Because packages consist of multiple files, they are harder to distribute. Most protocols support transferring only one file at a @@ -58,8 +59,8 @@ to guarantee code integrity at the destination. So long as your code contains nothing but pure Python code, and you know your deployment environment supports your version of Python, then -you can use Python's native packaging tools to create a *source -distribution*, or *sdist* for short. +you can use Python's native packaging tools to create a *source* +:term:`distribution package`, or *sdist* for short. Python's *sdists* are compressed archives (``.tar.gz`` files) containing one or more packages or modules. If your code is @@ -124,21 +125,26 @@ clients, are advanced enough that the framework is more or less a necessity. In all these cases, it makes sense to work backwards, from the -framework's packaging and deployment story. Frameworks wrap the -technologies outlined in the rest of the guide, and can make your -production experience easier and more reliable. +framework's packaging and deployment story. Some frameworks include a +deployment system which wraps the technologies outlined in the rest of +the guide. In these cases, you'll want to defer to your framework's +packaging guide for the easiest and most reliable production experience. + +If you ever wonder how these platforms and frameworks work under the +hood, you can always read the sections beyond. Service platforms ***************** -If you're developing a "Platform-as-a-Service" or "PaaS" like Heroku -or Google App Engine, you are going to want to follow their respective -packaging guides. +If you're developing for a "Platform-as-a-Service" or "PaaS" like +Heroku or Google App Engine, you are going to want to follow their +respective packaging guides. * Heroku * Google App Engine * PythonAnywhere * OpenShift +* "Serverless" frameworks like Zappa In all these setups, the platform takes care of packaging and deployment, as long as you follow their patterns. Most software does @@ -148,20 +154,22 @@ below. If you're developing software that will be deployed to machines you own, users' personal computers, or any other arrangement, read on. -Web and mobile platforms -************************ +Web browsers and mobile applications +************************************ -Python's advances are leading it into new spaces. These days you can -write a mobile app or web application frontend in Python. While the -language may be familiar, the packaging and deployment practices are -brand new. +Python's steady advances are leading it into new spaces. These days +you can write a mobile app or web application frontend in +Python. While the language may be familiar, the packaging and +deployment practices are brand new. -If you're using one of the following frameworks, you'll want to refer -to their packaging guides: +If you're planning on releasing to these new frontiers, you'll want to +check out the following frameworks, and refer to their packaging +guides: * Kivy -* Brython * Beeware +* Brython +* Flexx If you are *not* interested in using a framework or platform, or just wonder about some of the technologies and techniques utilized by the From 4a3a1b802bf4081ef7c2f4840f598e84326ff2b5 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Tue, 5 Jun 2018 10:01:56 -0700 Subject: [PATCH 05/23] fix @pradyunsg's very valuable copyedits --- source/overview.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 0e1a61c62..582f0ab62 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -2,7 +2,7 @@ Packaging Python ================ -Python is a general-purpose programming lanaguage, meaning you can use +Python is a general-purpose programming language, meaning you can use it for many things. You can build robots or server software or a game for your friends to play. @@ -27,7 +27,7 @@ combination of circumstances has its own solutions. Packaging libraries and tools ----------------------------- -You may have heard about PyPI and ``setup.py`` and wheel files. These +You may have heard about PyPI, ``setup.py``, and wheel files. These are just a few of the tools Python's ecosystem provides for distributing Python code to developers. From 71b7efdff774afaeb0d63699dc240cf16648e709 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Wed, 13 Jun 2018 18:46:45 -0700 Subject: [PATCH 06/23] update title for searchability, add a bit to the binary distribution section, all per @theacodes comments --- source/overview.rst | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 582f0ab62..50dd75c6a 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -1,18 +1,18 @@ -================ -Packaging Python -================ +=================================== +An Overview of Packaging for Python +=================================== Python is a general-purpose programming language, meaning you can use it for many things. You can build robots or server software or a game -for your friends to play. - -For this reason, the first step in every Python project must be to -think about the project's audience and the corresponding target -environment. Using this information, this overview will guide you to -the packaging technologies best suited to your project. +for your friends to play. For this reason, the first step in every +Python project must be to think about the project's audience and the +corresponding target environment. Using this information, this +overview will guide you to the packaging technologies best suited to +your project. It might seem strange to think about packaging before writing code, -but this process does wonders for avoiding headaches later on. +but this process does wonders for avoiding headaches later on. Some of +the questions you'll want to answer are: * Who are your software's users? Are they other developers doing software development, operations people in a datacenter, or some @@ -77,9 +77,17 @@ you will want to read on. Python binary distribution ^^^^^^^^^^^^^^^^^^^^^^^^^^ -Python's real power comes from its ability to integrate with the -software ecosystem, in particular libraries written in C, C++, -Fortran, Rust, and other languages. This is why wheels exist. +So much of Python's practical power comes from its ability to +integrate with the software ecosystem, in particular libraries written +in C, C++, Fortran, Rust, and other languages. + +(TODO: This is why wheels exist, etc.) + +Binary distributions are best when they come with source distributions +to match. This way, even if you don't upload pre-built versions of +your code for every operating system, users of other platforms can +still build it for themselves. Python and PyPI make it easy to upload +both. Packaging Applications From 6494e53d6353dd2ba643981562fa17e197827577 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sat, 21 Jul 2018 17:59:13 -0700 Subject: [PATCH 07/23] flesh out sections, clarify zipapp qualification, add a few links --- source/overview.rst | 72 +++++++++++++++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 19 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 50dd75c6a..701c66080 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -156,8 +156,8 @@ respective packaging guides. In all these setups, the platform takes care of packaging and deployment, as long as you follow their patterns. Most software does -not fit these templates, hence the existence of all the other options -below. +not fit one of these templates, hence the existence of all the other +options below. If you're developing software that will be deployed to machines you own, users' personal computers, or any other arrangement, read on. @@ -186,34 +186,68 @@ frameworks above, continue reading below. Depending on a pre-installed Python ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Depending on the host system to have Python installed. Common in -controlled environments like data centers, and local environments of -tech savvy people. Technically includes pretty much every major Linux -and Mac OS version for many years now. +Pick an arbitrary computer, and depending the context, there's a very +good chance Python is already installed. Included by default in most +Linux and Mac operating systems for many years now, you can reasonably +depend on Python preexisting in your data centers or on the personal +machines of developers and data scientists. -* PEX -* zipapp (doesn't include library dependencies, requires Python 3.5+) -* shiv (requires Python 3) +Technologies which support this model: + +* `PEX `_ (Python EXecutable) +* `zipapp `_ (does not help manage dependencies, requires Python 3.5+) +* `shiv `_ (requires Python 3) Depending on a new Python ecosystem ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Depending on the host system to have an alternative ecosystem -installed, like Anaconda. Increasingly common in academic, analytical, -and other data-oriented environments. Also used in production services. +For a long time many operating systems, including Mac and Windows, +lacked built-in package management. Only recently did these OSes gain +so-called "app stores", but even those focus on consumer applications +and offer little for developers. + +Developers long sought remedies, and in this struggle, emerged with +new their own package management solutions -- with some notable +benefits for Python developers in particular. The most prominent, an +alternative package ecosystem called Anaconda is built around Python +and is increasingly common in academic, analytical, and other +data-oriented environments, even making its way into server-oriented +environments. + +Instructions on building for the Anaconda ecosystem: + +* `Building libraries and applications with conda `_ +* `Transitioning a native Python package to Anaconda `_ + +A similar model involves installing an alternative Python +distribution, but does not support arbitrary operating system-level +packages: -* conda/Anaconda +* `Enthought Canopy `_ +* `ActiveState ActivePython `_ +* `WinPython `_ Bringing your own Python ^^^^^^^^^^^^^^^^^^^^^^^^ -Depending on the host system to be able to run a program in which -we've embedded Python. Operating systems have been designed to run -programs for a very long time, so this approach offers wide -compatibility, if you're willing to work at it. +Computing as we know it is defined by the ability to execute +programs. Every operating system natively supports one or more formats +of program they can natively execute. + +There are many techniques and technologies which turn your Python +program into one of these formats, most of which involve embedding the +Python interpreter and any other dependencies into a single executable +file. + +This approach offers wide compatiblity and seamless user experience, +though often through a panel of technologies, and a good amount of +effort. + +* Freezers (Links TODO, maybe separate doc?) + +For server applications, see `Chef Omnibus +`_. -* Freezers -* Omnibus Bringing your own userspace ^^^^^^^^^^^^^^^^^^^^^^^^^^^ From a4e0ada8eeee975c509db5eb0eaaa353812c9505 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sat, 21 Jul 2018 23:13:16 -0700 Subject: [PATCH 08/23] expand image sections, add a few related links --- source/overview.rst | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 701c66080..943dd63e3 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -252,24 +252,39 @@ For server applications, see `Chef Omnibus Bringing your own userspace ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Depending on the host system to be able to run a lightweight image in -a relatively modern arrangement often referred to as containerization. +An increasing number of operating systems -- including Linux, Mac OS, +and Windows -- can be set up to run applications packaged as +lightweight images, using a relatively modern arrangement often +referred to as `operating-system-level virtualization +`_, +or containerization for short. -* AppImage -* Flatpak -* Snappy -* Docker +As this level is packaging whole OS filesystems, techniques are mostly +Python agnostic. + +Adoption is most extensive among Linux servers, where the technology +originated and where the technologies below work best: + +* `AppImage `_ +* `Docker `_ +* `Flatpak `_ +* `Snapcraft `_ Bringing your own kernel ^^^^^^^^^^^^^^^^^^^^^^^^ -Depending on the host system to have a hypervisor and run a virtual -machine. This type of virtualization is mature and widespread in data -center environments. +Most operating systems support some form of classical virtualization, +running applications packaged as images containing a full operating +system of their own. Running these virtual machines, or VMs, is a +mature approach, widespread in data center environments. + +These techniques are mostly reserved for larger scale deployments in +data centers, though certain complex applications can benefit from +this packaging. Technologies are Python agnostic, and include: -* Vagrant -* AMIs -* OpenStack +* `Vagrant `_ +* `VHD `_, `AMI `_, and `other formats `_ +* `OpenStack `_ - A cloud management system in Python, with extensive VM support Bringing your own hardware ^^^^^^^^^^^^^^^^^^^^^^^^^^ From 3c0a08ab9db38a6caacd058a5c922e2b98f64721 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sun, 22 Jul 2018 17:02:11 -0700 Subject: [PATCH 09/23] refining a lot of phrasing, expanding on hardware, adding figures --- source/assets/py_pkg_applications.png | Bin 0 -> 158778 bytes source/assets/py_pkg_tools_and_libs.png | Bin 0 -> 70528 bytes source/index.rst | 1 + source/overview.rst | 96 ++++++++++++++++-------- 4 files changed, 65 insertions(+), 32 deletions(-) create mode 100644 source/assets/py_pkg_applications.png create mode 100644 source/assets/py_pkg_tools_and_libs.png diff --git a/source/assets/py_pkg_applications.png b/source/assets/py_pkg_applications.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3187dbf493e2b4a72914a63fb302e3216910b0 GIT binary patch literal 158778 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

7j}Vvrqx8 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�w1CMPf^(v~PO z^dr%4bGbl%dAZbQ3%o)0egKE(SzN*Y2Q*MRWT~i4mDMF5n<9b#*{rBIT{V-GAgz1b zRar1_DrMRlEJec)dqt|`W-i^nWFFb*;U?Y<08tC*#(}>~MbC`T8DqmUz4?KEf3Jg; zPLU_%N1Rv#N2}lXAdGrZI28cOkZy;opEb-U>?XN&wU>c_2lEt_j;u`g&_nmttxhx6 z+7DcdtoD5&D&wZ|=w{uC+M1kyDSz)lxN%4(@1#B@{IE4t_1JiGypcE)z}PRlGZdpi zMUyP$OG`^t?l~qucPf@-lmsSCy}Fw%edKS#KS;&-@eES*NTBe+-}JaGn}e_%bEUGv zj}ny>>~}rNXX&uFqpwyQlMiixGgU+@4_NAEY9ei!@1Qnpol0a2PO<`k%?beAtO#M4VswI z6FRLgA1aFTp94tS6-=u@>OXKms41o^_+f4YfGzqFx{%i!@6-Y0s`XFd`e4`rK5=8* zY=r0wZ>|8AjoamP_56sA9mYU`2${!Y_1{e_q72TfZ)y{d0<0U*=OJ_v$YtRFrCaM< z~gu?w6!6QQ8Y$gM|lR;T=>Z{A889hvLSu=!mW@K?mpBYOTBk4C3^ zU5oluvoB1&fYQFkYL|fjj02#rSou1$O^kYxhJXu$OXaz}$_hEfB<~;t`0z=dM>yKs z4^|@~gZ5_j><2{i7PNrh^zsiYoj<6Kb2I^;bMKpjO9`;t72v1FIDZ{jr~$n&^H=@H zr|dqr-|_u4m^V-F-{g~y|M02Hgcm!+;r%pNzJ2}Rg~|RCJH*Z$7LQt{z#$GhWxg;- zL*wE)(tV)@+d(XhNDm!M`Jx(i?7)* z)^vK!1$gc*a>PhLX3ABci{suJ31+qRj#bdu%Wui72o3ky7E#(Z+R1&ogWTk}y(*2iFk;N)tq5)pgcRKRFtT5uLSDoU!b8sldqx%sW!D#q zmKYk8>EB}XI-m%l%c(B#-PuNe$hiJ)EKv9sN3pbNLsmAqe`hC`*c{WpQauS-gaMl` zy^Uoe7;ow~j$ZHu+VgN70iN#tW4X!YoW_~^BJUu-ELowJHQN7Oh!^Rh^`jMol_I8y zGiM6%z+JPhV8xqi4KdY+LAj2M5}ZD3D7BYM0n-TQzmxrtiyTp2zQ{rxW7+`O9LshQ z2(Yv{_DkGOL3ZEP1p2v#9T-J>6zqjC1e#OWrQ8d5H`iI06wnJxe_D5iYsd^m^RsM4 zJHyWbv2HhE3Fo@96*uplXFQ-0P`t36ra$B(52f3r7r;Dz{F%_tEVKee6PHQ2J6RQ7M#M%Tr`; z;0*gtTYXwjRg3a2nB4a0>2rAy=7kwDSs$Xa(Vi&fnT7hQ0@kopS%dU$bHK1IftbB- zpiqBRp*swr$==Pa!Mp1i^@qJ0e;W1s?|~t)Pha&a;M4v00cU?^e&I(#QMX4b=YcBv ig}!c6p;*}`zJhj9%;qF6+e7HYX=Pyxtunj*+y4NjX2nYY literal 0 HcmV?d00001 diff --git a/source/assets/py_pkg_tools_and_libs.png b/source/assets/py_pkg_tools_and_libs.png new file mode 100644 index 0000000000000000000000000000000000000000..707f1081de47a12ca655e180f591c15894b5e8c5 GIT binary patch literal 70528 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%0DZEqEIc%-U>p^n| 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 literal 0 HcmV?d00001 diff --git a/source/index.rst b/source/index.rst index 67925f71f..839722a4d 100644 --- a/source/index.rst +++ b/source/index.rst @@ -6,6 +6,7 @@ Python Packaging User Guide :maxdepth: 2 :hidden: + overview tutorials/index guides/index discussions/index diff --git a/source/overview.rst b/source/overview.rst index 943dd63e3..2e3ed7f8b 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -2,39 +2,48 @@ An Overview of Packaging for Python =================================== -Python is a general-purpose programming language, meaning you can use -it for many things. You can build robots or server software or a game -for your friends to play. For this reason, the first step in every -Python project must be to think about the project's audience and the -corresponding target environment. Using this information, this -overview will guide you to the packaging technologies best suited to -your project. - -It might seem strange to think about packaging before writing code, -but this process does wonders for avoiding headaches later on. Some of -the questions you'll want to answer are: - -* Who are your software's users? Are they other developers doing - software development, operations people in a datacenter, or some - less software-savvy group? -* Is your software meant for servers, desktops, or embedded devices? -* Is your software installed individually, or to many computers at once? +As a general-purpose programming language, Python is designed to be +used it for many things. You can build robots or web sites or a +game for your friends to play. + +Python's flexibility is why the first step in every Python project +must be to think about the project's audience and the corresponding +environment where the project will run. It might seem strange to think +about packaging before writing code, but this process does wonders for +avoiding headaches later on. + +Thinking about deployment +------------------------- + +Packages exist to be installed (or *deployed*), so before you package +anything, you'll want to have some answers to the deployment questions +below: + +* Who are your software's users? Will your software be installed by + other developers doing software development, operations people in a + datacenter, or a less software-savvy group? +* Is your software intended to run on servers, desktops, or embedded + in dedicated devices? +* Is your software installed individually, or in large deployment batches? Packaging is all about target environment and deployment experience. There are many answers to the questions above and each -combination of circumstances has its own solutions. +combination of circumstances has its own solutions. With this +information, the following overview will guide you to the packaging +technologies best suited to your project. Packaging libraries and tools ----------------------------- -You may have heard about PyPI, ``setup.py``, and wheel files. These -are just a few of the tools Python's ecosystem provides for -distributing Python code to developers. +You may have heard about PyPI, ``setup.py``, and ``wheel`` +files. These are just a few of the tools Python's ecosystem provides +for distributing Python code to developers, which you can read about in +:doc:`guides/distributing-packages-using-setuptools`. -The following classes of code are libraries and tools, meant for a -technical audience, in a development setting. Skip ahead to -Application packaging if you're looking for ways to package Python for -a production setting. +The following approaches to packaging are meant for libraries and +tools used by technical audience in a development setting. If you're +looking for ways to package Python for a non-technical audience and/or +a production setting, skip ahead to :ref:`packaging-applications`. Python modules ^^^^^^^^^^^^^^ @@ -89,14 +98,23 @@ your code for every operating system, users of other platforms can still build it for themselves. Python and PyPI make it easy to upload both. +.. figure:: assets/py_pkg_tools_and_libs.png + :width: 80% + :alt: A summary of Python's packaging capabilities for tools and libraries. + + Python's recommended built-in library and tool packaging + technologies. Excerpted from `The Packaging Gradient (2017) + `_. + +.. _packaging-applications: Packaging Applications ---------------------- So far we've only discussed Python's native distribution tools. Based -on our introduction, you would be correct to infer we're only -targeting environments which have Python. More importantly we're -assuming an audience who knows how to install Python packages. +on our introduction, you would be correct to infer these built-in +approaches only target environments which have Python, and an audience +audience who knows how to install Python packages. With the variety of operating systems, configurations, and people out there, this assumption is only safe when targeting a developer @@ -289,11 +307,25 @@ this packaging. Technologies are Python agnostic, and include: Bringing your own hardware ^^^^^^^^^^^^^^^^^^^^^^^^^^ -Depending on your host to have electricity. +The most all-encompassing way to ship your software would be to ship +it already-installed on some hardware. This way, your software's user +would require only electricity. + +Whereas the virtual machines described above are primarily reserved +for the tech-savvy, hardware appliances used by the most advanced data +centers to the youngest children. + +Embed your code on an `Adafruit +`_, +`MicroPython `_, or more-powerful hardware +running Python, then ship it to the datacenter or your users' +homes. They plug and play, and you can call it a day. + +.. figure:: assets/py_pkg_applications.png + :width: 80% + :alt: A summary of technologies used to package Python applications. -Embed your code on an Adafruit or a Micropython, or some other -hardware, and just ship it to the datacenter, or your users' homes, -and call it good. + The simplified gamut of technologies used to package Python applications. What about... ------------- From 44a27ec45f8b36d9ec106b8bc5f2ad23e6e7136c Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sun, 22 Jul 2018 19:52:34 -0700 Subject: [PATCH 10/23] lots of links, and expand on considerations (i think wheels might be the only thing left) --- source/overview.rst | 74 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 2e3ed7f8b..3a29fe890 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -166,11 +166,11 @@ If you're developing for a "Platform-as-a-Service" or "PaaS" like Heroku or Google App Engine, you are going to want to follow their respective packaging guides. -* Heroku -* Google App Engine -* PythonAnywhere -* OpenShift -* "Serverless" frameworks like Zappa +* `Heroku `_ +* `Google App Engine `_ +* `PythonAnywhere `_ +* `OpenShift `_ +* "Serverless" frameworks like `Zappa `_ In all these setups, the platform takes care of packaging and deployment, as long as you follow their patterns. Most software does @@ -192,10 +192,10 @@ If you're planning on releasing to these new frontiers, you'll want to check out the following frameworks, and refer to their packaging guides: -* Kivy -* Beeware -* Brython -* Flexx +* `Kivy `_ +* `Beeware `_ +* `Brython `_ +* `Flexx `_ If you are *not* interested in using a framework or platform, or just wonder about some of the technologies and techniques utilized by the @@ -216,6 +216,8 @@ Technologies which support this model: * `zipapp `_ (does not help manage dependencies, requires Python 3.5+) * `shiv `_ (requires Python 3) +.. _depending-on-a-new-python: + Depending on a new Python ecosystem ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -245,6 +247,8 @@ packages: * `ActiveState ActivePython `_ * `WinPython `_ +.. _bringing-your-own-python: + Bringing your own Python ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -330,15 +334,59 @@ homes. They plug and play, and you can call it a day. What about... ------------- -* Operating-system packages (deb/rpm) -* virtualenv -* Security considerations +The sections above can only summarize so much, and you might be wondering about some of the more conspicuous gaps. + +Operating systems packages +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +As mentioned in :ref:`depending-on-a-new-python` above, some operating +have package managers of their own. If you're very sure of the +operating system you're targeting, you can depend directly on a format +like `deb `_ (for +Debian, Ubuntu, etc.) or `RPM +`_ (for Red Hat, +Fedora, etc.), and use that built-in package manager to take care of +installation, and even deployment. + +In most deployment pipelines, the OS package manager is just one piece +of the puzzle. + +virtualenv +^^^^^^^^^^ + +`Virtualenvs +`_ have +been an indispensible tool for multiple generations of Python +developer, but are slowly fading from view, as they are being wrapped +by higher-level tools. With packaging in particular, virtualenvs are +used as a primitive in `the dh-virtualenv tool +`_ and +`osnap `_, both of which wrap +virtualenvs in a self-contained way. + +For production deployments, do not rely on running ``pip install`` +from the Internet into a virtualenv, as one might do in a development +environment. The overview above is full of much better solutions. + +Security +^^^^^^^^ + +The further down the gradient you come, the harder it gets to update +components of your package. Everything is more tightly bound together. + +For example, if a kernel security issue emerges, and you're deploying +containers, the host system's kernel can be updated without requiring +a new build on behalf of the application. If you deploy VM images, +you'll need a new build. Whether or not this dynamic makes one option +more secure is still a bit of an old debate, going back to the +still-unsettled matter of `static versus dynamic linking +`_. Summary ------- Packaging in Python has a bit of a reputation for being a bumpy -ride. This is mostly a confused side effect of Python's +ride. This impression is mostly a byproduct of Python's versatility. Once you understand the natural boundaries between each packaging solution, you begin to realize that the varied landscape is a small price Python programmers pay for using the most balanced, From 48e61edbcdc2e832f0fde6244d22e75beb6a86a6 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Mon, 23 Jul 2018 09:59:35 -0700 Subject: [PATCH 11/23] link freezers --- source/overview.rst | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 3a29fe890..79dc2e4a3 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -261,13 +261,23 @@ program into one of these formats, most of which involve embedding the Python interpreter and any other dependencies into a single executable file. -This approach offers wide compatiblity and seamless user experience, -though often through a panel of technologies, and a good amount of -effort. - -* Freezers (Links TODO, maybe separate doc?) - -For server applications, see `Chef Omnibus +This approach, called *freezing*, offers wide compatiblity and +seamless user experience, though often through a panel of +technologies, and a good amount of effort. + +A selection of Python freezers: + +* `pyInstaller `_ - Cross-platform +* `cx_Freeze `_ - Cross-platform +* `constructor `_ - For command-line installers +* `py2exe `_ - Windows only +* `py2app `_ - Mac only +* `bbFreeze `_ - Windows, Linux, Python 2 only +* `osnap `_ - Windows and Mac +* `pynsist `_ - Windows only + +Most of the above imply single-user deployments. For multi-component +server applications, see `Chef Omnibus `_. From 12624cd8f26f1e00ccda70384537d4ab3d77b352 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Thu, 26 Jul 2018 09:53:54 -0700 Subject: [PATCH 12/23] more links, slight tweaks to the intro and other language, provide a linked summary of wheels --- source/overview.rst | 46 ++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 79dc2e4a3..9ea1f4a2e 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -3,8 +3,9 @@ An Overview of Packaging for Python =================================== As a general-purpose programming language, Python is designed to be -used it for many things. You can build robots or web sites or a -game for your friends to play. +used in many ways. You can build web sites or industrial robots or a +game for your friends to play, and much more, all using the same +core technology. Python's flexibility is why the first step in every Python project must be to think about the project's audience and the corresponding @@ -12,6 +13,13 @@ environment where the project will run. It might seem strange to think about packaging before writing code, but this process does wonders for avoiding headaches later on. +This overview provides a general-purpose decision tree for reasoning +about Python's plethora of packaging options. Read on to choose the best +technology for your next project. + +.. contents:: Contents + :local: + Thinking about deployment ------------------------- @@ -74,11 +82,12 @@ you can use Python's native packaging tools to create a *source* Python's *sdists* are compressed archives (``.tar.gz`` files) containing one or more packages or modules. If your code is pure-Python, and you only depend on other Python packages, you can `go -here to learn more `_. +here to learn more `_. If you rely on any non-Python code, or non-Python packages (such as -libxml2 in the case of lxml, or BLAS libraries in the case of numpy), -you will want to read on. +`libxml2 `_ in the case of +`lxml `_, or BLAS libraries in the +case of `numpy `_), you will want to read on. .. TODO: "Did you know?" about distributions providing multiple versions of the same package. Python packaging superpower! @@ -90,13 +99,20 @@ So much of Python's practical power comes from its ability to integrate with the software ecosystem, in particular libraries written in C, C++, Fortran, Rust, and other languages. -(TODO: This is why wheels exist, etc.) +Not all developers have the right tools or experiences to build these +components written in these compiled languages, so Python created the +:term:`wheel`, a package format designed to ship libraries with +compiled artifacts. In fact, Python's package installer, ``pip``, +always prefers wheels because installation is always faster. Binary distributions are best when they come with source distributions -to match. This way, even if you don't upload pre-built versions of -your code for every operating system, users of other platforms can -still build it for themselves. Python and PyPI make it easy to upload -both. +to match. Even if you don't upload wheels of your code for every +operating system, by uploading the sdist, you're enabling users of +other platforms to still build it for themselves. + +Python and PyPI make it easy to upload both wheels and sdists +together. Just follow the :doc:`tutorials/packaging-projects` +tutorial. .. figure:: assets/py_pkg_tools_and_libs.png :width: 80% @@ -249,8 +265,8 @@ packages: .. _bringing-your-own-python: -Bringing your own Python -^^^^^^^^^^^^^^^^^^^^^^^^ +Bringing your own Python executable +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Computing as we know it is defined by the ability to execute programs. Every operating system natively supports one or more formats @@ -346,8 +362,8 @@ What about... The sections above can only summarize so much, and you might be wondering about some of the more conspicuous gaps. -Operating systems packages -^^^^^^^^^^^^^^^^^^^^^^^^^^ +Operating system packages +^^^^^^^^^^^^^^^^^^^^^^^^^ As mentioned in :ref:`depending-on-a-new-python` above, some operating have package managers of their own. If you're very sure of the @@ -392,7 +408,7 @@ more secure is still a bit of an old debate, going back to the still-unsettled matter of `static versus dynamic linking `_. -Summary +Wrap up ------- Packaging in Python has a bit of a reputation for being a bumpy From 9e53a2f225c3e024aa81a54623647d60f7f44dca Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Thu, 26 Jul 2018 10:04:20 -0700 Subject: [PATCH 13/23] link to overview from home page --- source/index.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/index.rst b/source/index.rst index 839722a4d..0000c79ed 100644 --- a/source/index.rst +++ b/source/index.rst @@ -33,8 +33,10 @@ happily accept any :doc:`contributions and feedback `. 😊 Get started =========== -Essential tools and concepts for working with the Python packaging ecosystem are -covered in our :doc:`tutorials/index` section: +Thinking about shipping a new Python library or application? Start with :doc:`overview`. + +Essential tools and concepts for working within the Python +development ecosystem are covered in our :doc:`tutorials/index` section: * to learn how to install packages, see the :doc:`tutorial on installing packages `. From d366f79093da6a43a6adf9f06c1ae9f0bcebc949 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Fri, 27 Jul 2018 09:59:52 -0700 Subject: [PATCH 14/23] various rephrasals and addition of a couple asides --- source/overview.rst | 50 +++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 9ea1f4a2e..2b307ef80 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -89,11 +89,19 @@ If you rely on any non-Python code, or non-Python packages (such as `lxml `_, or BLAS libraries in the case of `numpy `_), you will want to read on. -.. TODO: "Did you know?" about distributions providing multiple - versions of the same package. Python packaging superpower! - -Python binary distribution -^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. note:: Python and PyPI support multiple distributions providing + different implementations of the same package. For instance the + unmaintained-but-seminal `PIL distribution + `_ provides the PIL package, and so + does `Pillow `_, an + actively-maintained fork of PIL! + + This Python packaging superpower makes it possible for Pillow to be + a drop-in replacement for PIL, just by changing your project's + `q`install_requires`` or ``requirements.txt``. + +Python binary distributions +^^^^^^^^^^^^^^^^^^^^^^^^^^^ So much of Python's practical power comes from its ability to integrate with the software ecosystem, in particular libraries written @@ -142,29 +150,22 @@ code, called libraries, between developers. We can piggyback library packaging, using technologies like `setuptools entry_points `_. -Generally libraries are building blocks, and not complete -applications. For distributing applications, there's a whole world of -technologies out there. +Libraries are building blocks, not complete applications. For +distributing applications, there's a whole new world of technologies +out there. The best way to organize these application packaging options is by the way they depend on the target environment. That's how we'll approach the coming sections. -.. TODO: Another way of thinking about packaging solutions is by how - much they include. All solutions include your code, plus some - amount of your code's library and service dependencies. PEX - includes Python libraries. RPM includes a list of dependencies on - libraries and local services. Images can be built to include - everything. - Depending on a framework ^^^^^^^^^^^^^^^^^^^^^^^^ Some types of Python applications, like web sites and services, are common enough that they have frameworks to enable their development and packaging. Other types of applications, like web and mobile -clients, are advanced enough that the framework is more or less a -necessity. +clients, are advanced enough that a framework becomes more than a +convenience. In all these cases, it makes sense to work backwards, from the framework's packaging and deployment story. Some frameworks include a @@ -232,6 +233,15 @@ Technologies which support this model: * `zipapp `_ (does not help manage dependencies, requires Python 3.5+) * `shiv `_ (requires Python 3) +.. note:: Of all the approaches here, depending on a pre-installed + Python relies the most on the target environment. Of course, + this also makes for the smallest package, as small as + single-digit megabytes, or even kilobytes. + + In general, decreasing the dependency on the target system + increases the size of our package, so the solutions here + are roughly arranged by increasing size of output. + .. _depending-on-a-new-python: Depending on a new Python ecosystem @@ -278,8 +288,8 @@ Python interpreter and any other dependencies into a single executable file. This approach, called *freezing*, offers wide compatiblity and -seamless user experience, though often through a panel of -technologies, and a good amount of effort. +seamless user experience, though often requires multiple technologies, +and a good amount of effort. A selection of Python freezers: @@ -288,7 +298,7 @@ A selection of Python freezers: * `constructor `_ - For command-line installers * `py2exe `_ - Windows only * `py2app `_ - Mac only -* `bbFreeze `_ - Windows, Linux, Python 2 only +* `bbFreeze `_ - Windows, Linux, Python 2 only * `osnap `_ - Windows and Mac * `pynsist `_ - Windows only From 2123ee25a7ece73b9f0dfca3be5d03c273d57e4e Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Fri, 27 Jul 2018 10:56:42 -0700 Subject: [PATCH 15/23] fix typo --- source/overview.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/overview.rst b/source/overview.rst index 2b307ef80..9d71243c9 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -98,7 +98,7 @@ case of `numpy `_), you will want to read on. This Python packaging superpower makes it possible for Pillow to be a drop-in replacement for PIL, just by changing your project's - `q`install_requires`` or ``requirements.txt``. + ``install_requires`` or ``requirements.txt``. Python binary distributions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ From a629f96972fd7cab055039f91d696b7ad49fbd65 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sat, 28 Jul 2018 21:57:55 -0700 Subject: [PATCH 16/23] address most copyediting concerns, tweak a header, and add thea's expansion of the modules section. --- source/overview.rst | 47 +++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 9d71243c9..d6d63584b 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -30,8 +30,8 @@ below: * Who are your software's users? Will your software be installed by other developers doing software development, operations people in a datacenter, or a less software-savvy group? -* Is your software intended to run on servers, desktops, or embedded - in dedicated devices? +* Is your software intended to run on servers, desktops, mobile + clients (phones, tablets, etc.), or embedded in dedicated devices? * Is your software installed individually, or in large deployment batches? Packaging is all about target environment and deployment @@ -58,15 +58,26 @@ Python modules A Python file, provided it only relies on the standard library, can be redistributed and reused. You will also need to ensure it's written -for the right version of Python. +for the right version of Python, and only relies on the standard +library. + +This is great for sharing simple scripts and snippets between people +who both have compatible Python versions (such as via email, +StackOverflow, or GitHub gists). There are even some entire Python +libraries that offer this as an option, such as `bottle.py +`_ and `boltons +`_. + +However, this pattern won't scale for projects that consist of +multiple files, need additional libraries, or need a specific version +of Python, hence the options below. Python source distributions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ If your code consists of multiple Python files, it's usually organized -into a directory structure. Any directory containing Python files, -provided one of those files is named ``__init__.py``, comprises an -:term:`import package`. +into a directory structure. Any directory containing Python files can +comprise an :term:`import package`. Because packages consist of multiple files, they are harder to distribute. Most protocols support transferring only one file at a @@ -221,7 +232,7 @@ frameworks above, continue reading below. Depending on a pre-installed Python ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Pick an arbitrary computer, and depending the context, there's a very +Pick an arbitrary computer, and depending on the context, there's a very good chance Python is already installed. Included by default in most Linux and Mac operating systems for many years now, you can reasonably depend on Python preexisting in your data centers or on the personal @@ -242,10 +253,10 @@ Technologies which support this model: increases the size of our package, so the solutions here are roughly arranged by increasing size of output. -.. _depending-on-a-new-python: +.. _depending-on-a-new-ecosystem: -Depending on a new Python ecosystem -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Depending on a new software distribution ecosystem +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ For a long time many operating systems, including Mac and Windows, lacked built-in package management. Only recently did these OSes gain @@ -352,8 +363,8 @@ it already-installed on some hardware. This way, your software's user would require only electricity. Whereas the virtual machines described above are primarily reserved -for the tech-savvy, hardware appliances used by the most advanced data -centers to the youngest children. +for the tech-savvy, you can find hardware appliances being used by +everyone from the most advanced data centers to the youngest children. Embed your code on an `Adafruit `_, @@ -375,14 +386,16 @@ The sections above can only summarize so much, and you might be wondering about Operating system packages ^^^^^^^^^^^^^^^^^^^^^^^^^ -As mentioned in :ref:`depending-on-a-new-python` above, some operating -have package managers of their own. If you're very sure of the +As mentioned in :ref:`depending-on-a-new-ecosystem` above, some operating +systems have package managers of their own. If you're very sure of the operating system you're targeting, you can depend directly on a format like `deb `_ (for Debian, Ubuntu, etc.) or `RPM `_ (for Red Hat, Fedora, etc.), and use that built-in package manager to take care of -installation, and even deployment. +installation, and even deployment. You can even use `FPM +`_ to +generate both deb and RPMs from the same source. In most deployment pipelines, the OS package manager is just one piece of the puzzle. @@ -425,5 +438,5 @@ Packaging in Python has a bit of a reputation for being a bumpy ride. This impression is mostly a byproduct of Python's versatility. Once you understand the natural boundaries between each packaging solution, you begin to realize that the varied landscape is -a small price Python programmers pay for using the most balanced, -flexible language available. +a small price Python programmers pay for using one of the most +balanced, flexible language available. From 8d3aae2433c5aa369b683cd8be65071ee8c62434 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sat, 28 Jul 2018 22:07:09 -0700 Subject: [PATCH 17/23] try to tie sdists and wheels more closely together as recommended practice --- source/overview.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index d6d63584b..0aacabdcc 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -98,7 +98,9 @@ here to learn more `_. If you rely on any non-Python code, or non-Python packages (such as `libxml2 `_ in the case of `lxml `_, or BLAS libraries in the -case of `numpy `_), you will want to read on. +case of `numpy `_), you will need to +use the format detailed in the next section, which also has many +advantages for pure-Python libraries. .. note:: Python and PyPI support multiple distributions providing different implementations of the same package. For instance the @@ -122,7 +124,8 @@ Not all developers have the right tools or experiences to build these components written in these compiled languages, so Python created the :term:`wheel`, a package format designed to ship libraries with compiled artifacts. In fact, Python's package installer, ``pip``, -always prefers wheels because installation is always faster. +always prefers wheels because installation is always faster, so even +pure-Python packages work better with wheels. Binary distributions are best when they come with source distributions to match. Even if you don't upload wheels of your code for every From acc68074d4b7a1f0b48ef1483ef0d04ce36644ed Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Mon, 30 Jul 2018 10:29:21 -0700 Subject: [PATCH 18/23] new -> separate, add a bit more detail --- source/overview.rst | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 0aacabdcc..1f203ae23 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -256,10 +256,10 @@ Technologies which support this model: increases the size of our package, so the solutions here are roughly arranged by increasing size of output. -.. _depending-on-a-new-ecosystem: +.. _depending-on-a-separate-ecosystem: -Depending on a new software distribution ecosystem -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Depending on a separate software distribution ecosystem +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ For a long time many operating systems, including Mac and Windows, lacked built-in package management. Only recently did these OSes gain @@ -267,14 +267,16 @@ so-called "app stores", but even those focus on consumer applications and offer little for developers. Developers long sought remedies, and in this struggle, emerged with -new their own package management solutions -- with some notable -benefits for Python developers in particular. The most prominent, an -alternative package ecosystem called Anaconda is built around Python -and is increasingly common in academic, analytical, and other -data-oriented environments, even making its way into server-oriented -environments. +their own package management solutions, such as `Homebrew +`_. The most relevant alternative for Python +developers is a package ecosystem called `Anaconda +`_. Anaconda +is built around Python and is increasingly common in academic, +analytical, and other data-oriented environments, even making its way +`into server-oriented environments +`_. -Instructions on building for the Anaconda ecosystem: +Instructions on building and publishing for the Anaconda ecosystem: * `Building libraries and applications with conda `_ * `Transitioning a native Python package to Anaconda `_ @@ -384,12 +386,13 @@ homes. They plug and play, and you can call it a day. What about... ------------- -The sections above can only summarize so much, and you might be wondering about some of the more conspicuous gaps. +The sections above can only summarize so much, and you might be +wondering about some of the more conspicuous gaps. Operating system packages ^^^^^^^^^^^^^^^^^^^^^^^^^ -As mentioned in :ref:`depending-on-a-new-ecosystem` above, some operating +As mentioned in :ref:`depending-on-a-separate-ecosystem` above, some operating systems have package managers of their own. If you're very sure of the operating system you're targeting, you can depend directly on a format like `deb `_ (for From 3f2f231b8fc907794646d8774155219d98263c99 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Mon, 30 Jul 2018 10:43:15 -0700 Subject: [PATCH 19/23] improve frameworks section intro --- source/overview.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 1f203ae23..907b8953f 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -175,11 +175,11 @@ the coming sections. Depending on a framework ^^^^^^^^^^^^^^^^^^^^^^^^ -Some types of Python applications, like web sites and services, are -common enough that they have frameworks to enable their development -and packaging. Other types of applications, like web and mobile -clients, are advanced enough that a framework becomes more than a -convenience. +Some types of Python applications, like web site backends and other +network services, are common enough that they have frameworks to +enable their development and packaging. Other types of applications, +like dynamic web frontends and mobile clients, are complex enough to +target that a framework becomes more than a convenience. In all these cases, it makes sense to work backwards, from the framework's packaging and deployment story. Some frameworks include a From 88a1bc98e709102a54f08e2842f8251822680d76 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Fri, 10 Aug 2018 09:49:24 -0700 Subject: [PATCH 20/23] add additional encouragement to dual-publish wheels and sdists --- source/overview.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/overview.rst b/source/overview.rst index 907b8953f..2095c522c 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -130,7 +130,10 @@ pure-Python packages work better with wheels. Binary distributions are best when they come with source distributions to match. Even if you don't upload wheels of your code for every operating system, by uploading the sdist, you're enabling users of -other platforms to still build it for themselves. +other platforms to still build it for themselves. Default to +publishing both sdist and wheel archives together, *unless* you're +creating artifacts for a very specific use case where you know the +recipient only needs one or the other. Python and PyPI make it easy to upload both wheels and sdists together. Just follow the :doc:`tutorials/packaging-projects` From ee13f1049bbb770fc8e266951ee01d91588bd51f Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sat, 11 Aug 2018 10:42:47 -0700 Subject: [PATCH 21/23] adjust heading consistency and add notes for future editors --- source/overview.rst | 44 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 2095c522c..79d3355d5 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -2,6 +2,8 @@ An Overview of Packaging for Python =================================== +.. Editors, see notes at the bottom of the document for maintenance info. + As a general-purpose programming language, Python is designed to be used in many ways. You can build web sites or industrial robots or a game for your friends to play, and much more, all using the same @@ -40,8 +42,8 @@ combination of circumstances has its own solutions. With this information, the following overview will guide you to the packaging technologies best suited to your project. -Packaging libraries and tools ------------------------------ +Packaging Python libraries and tools +------------------------------------ You may have heard about PyPI, ``setup.py``, and ``wheel`` files. These are just a few of the tools Python's ecosystem provides @@ -149,8 +151,8 @@ tutorial. .. _packaging-applications: -Packaging Applications ----------------------- +Packaging Python applications +----------------------------- So far we've only discussed Python's native distribution tools. Based on our introduction, you would be correct to infer these built-in @@ -449,3 +451,37 @@ versatility. Once you understand the natural boundaries between each packaging solution, you begin to realize that the varied landscape is a small price Python programmers pay for using one of the most balanced, flexible language available. + + +.. Editing notes: + + Some notes to keep in mind when updating the Python Packaging Overview: + + This document targets at an intermediate audience, + lower-mid-level to early-advanced Python developers. It's expected + that most developers finding this document will have already + encountered several packaging technologies, through package + managers, app stores, pip, and so forth. They may have even + shipped a few packages of their own. They are smart enough to have + built something to ship, and experienced (or frustrated) enough to + know to search for prior art. + + In the spirit of being a succinct, "to-the-point" overview, we + forego the basics (like, "what is packaging?"). True beginners + rarely try to ship their very first lines of code, and when they + do, they are often working according to a text and/or framework + with its own directions and affordances. + + Meanwhile, the target audience of intermediate + developers/apprentice packagers will benefit most from a framework + that helps them sort out the differences and reasons for such a + wide variety of technologies. + + We want to foster an understanding that packaging technologies are + not so much competing, as they are trying to cover a + highly-variable and often very strict set of requirements. "Complex + and nuanced" is an improvement on "arbitrary and complicated". + + At its initial publication in 2018, this document was largely based + on "The Many Layers of Packaging" essay, here: + http://sedimental.org/the_packaging_gradient.html From d1e711180405e52bfdb207af6261846dbae2c93c Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sat, 11 Aug 2018 13:39:37 -0700 Subject: [PATCH 22/23] a few tweaks for flow, plus a favorite quote from Wikipedia for the editors' notes --- source/overview.rst | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/source/overview.rst b/source/overview.rst index 79d3355d5..5d37aa496 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -13,7 +13,7 @@ Python's flexibility is why the first step in every Python project must be to think about the project's audience and the corresponding environment where the project will run. It might seem strange to think about packaging before writing code, but this process does wonders for -avoiding headaches later on. +avoiding future headaches. This overview provides a general-purpose decision tree for reasoning about Python's plethora of packaging options. Read on to choose the best @@ -173,9 +173,9 @@ Libraries are building blocks, not complete applications. For distributing applications, there's a whole new world of technologies out there. -The best way to organize these application packaging options is by the -way they depend on the target environment. That's how we'll approach -the coming sections. +The next few sections organize these application packaging options +their dependencies on the target environment, so you can choose the +right one for your project. Depending on a framework ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -336,10 +336,10 @@ and Windows -- can be set up to run applications packaged as lightweight images, using a relatively modern arrangement often referred to as `operating-system-level virtualization `_, -or containerization for short. +or *containerization*. -As this level is packaging whole OS filesystems, techniques are mostly -Python agnostic. +These techniques are mostly Python agnostic, because they package +whole OS filesystems, not just Python or Python packages. Adoption is most extensive among Linux servers, where the technology originated and where the technologies below work best: @@ -482,6 +482,15 @@ balanced, flexible language available. highly-variable and often very strict set of requirements. "Complex and nuanced" is an improvement on "arbitrary and complicated". + As far as content and tone, the aim is to provide a modicum of + background information in an encyclopedic fashion. Be correct and + practical, but as they say on Wikipedia, "Information should not be + included ... solely because it is true or useful. [An article] + should not be a complete exposition of all possible details, but a + summary of accepted knowledge regarding its subject." Emphasis on + the summary, plus ideally many links to other practical resources + for more details. + At its initial publication in 2018, this document was largely based on "The Many Layers of Packaging" essay, here: http://sedimental.org/the_packaging_gradient.html From db86788054f5ec9b61445c82861b9c0e347c7df7 Mon Sep 17 00:00:00 2001 From: Mahmoud Hashemi Date: Sat, 11 Aug 2018 14:39:35 -0700 Subject: [PATCH 23/23] add link to jupyterlab writing advice --- source/overview.rst | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/source/overview.rst b/source/overview.rst index 5d37aa496..53c0b3d97 100644 --- a/source/overview.rst +++ b/source/overview.rst @@ -164,7 +164,7 @@ there, this assumption is only safe when targeting a developer audience. Python's native packaging is mostly built for distributing reusable -code, called libraries, between developers. We can piggyback +code, called libraries, between developers. You can piggyback **tools**, or basic applications for developers, on top of Python's library packaging, using technologies like `setuptools entry_points `_. @@ -491,6 +491,23 @@ balanced, flexible language available. the summary, plus ideally many links to other practical resources for more details. + Finally, unlike an encyclopedia, this guide takes some style points + from JupyterLab's metadocumentation, which at the time of writing + says: + + - The documentation should be written in the second person, + referring to the reader as “you” and not using the first person + plural “we.” The author of the documentation is not sitting next to + the user, so using “we” can lead to frustration when things don’t + work as expected. + + - Avoid words that trivialize using JupyterLab + such as “simply” or “just.” Tasks that developers find simple or + easy may not be for users." + + Among other useful points. Read more here: + https://jupyterlab.readthedocs.io/en/latest/developer/documentation.html + At its initial publication in 2018, this document was largely based on "The Many Layers of Packaging" essay, here: http://sedimental.org/the_packaging_gradient.html