Many edits
This commit is contained in:
87
Notes/09_Packages/03_Distribution.md
Normal file
87
Notes/09_Packages/03_Distribution.md
Normal file
@@ -0,0 +1,87 @@
|
||||
[Contents](../Contents) \| [Previous (9.2 Third Party Packages)](02_Third_party) \| [Next (The End)](TheEnd)
|
||||
|
||||
# 9.3 Distribution
|
||||
|
||||
At some point you might want to give your code to someone else, possibly just a co-worker.
|
||||
This section gives the most basic technique of doing that. For more detailed
|
||||
information, you'll need to consult the [Python Packaging User Guide](https://packaging.python.org).
|
||||
|
||||
### Creating a setup.py file
|
||||
|
||||
Add a `setup.py` file to the top-level of your project directory.
|
||||
|
||||
```python
|
||||
# setup.py
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
name="porty",
|
||||
version="0.0.1",
|
||||
author="Your Name",
|
||||
author_email="you@example.com",
|
||||
description="Practical Python Code",
|
||||
packages=setuptools.find_packages(),
|
||||
)
|
||||
```
|
||||
|
||||
### Creating MANIFEST.in
|
||||
|
||||
If there are additional files associated with your project, specify them with a `MANIFEST.in` file.
|
||||
For example:
|
||||
|
||||
```
|
||||
# MANIFEST.in
|
||||
include *.csv
|
||||
```
|
||||
|
||||
Put the `MANIFEST.in` file in the same directory as `setup.py`.
|
||||
|
||||
### Creating a source distribution
|
||||
|
||||
To create a distribution of your code, use the `setup.py` file. For example:
|
||||
|
||||
```
|
||||
bash % python setup.py sdist
|
||||
```
|
||||
|
||||
This will create a `.tar.gz` or `.zip` file in the directory `dist/`. That file is something
|
||||
that you can now give away to others.
|
||||
|
||||
### Installing your code
|
||||
|
||||
Others can install your Python code using `pip` in the same way that they do for other
|
||||
packages. They simply need to supply the file created in the previous step.
|
||||
For example:
|
||||
|
||||
```
|
||||
bash % python -m pip install porty-0.0.1.tar.gz
|
||||
```
|
||||
|
||||
### Commentary
|
||||
|
||||
The steps above describe the absolute most minimal basics of creating
|
||||
a package of Python code that you can give to another person. In
|
||||
reality, it can be much more complicated depending on third-party
|
||||
dependencies, whether or not your application includes foreign code
|
||||
(i.e., C/C++), and so forth. Covering that is outside the scope of
|
||||
this course. We've only taken a tiny first step.
|
||||
|
||||
## Exercises
|
||||
|
||||
### Exercise 9.5: Make a package
|
||||
|
||||
Take the `porty-app/` code you created for Exercise 9.3 and see if you
|
||||
can recreate the steps described here. Specifically, add a `setup.py`
|
||||
file and a `MANIFEST.in` file to the top-level directory.
|
||||
Create a source distribution file by running `python setup.py sdist`.
|
||||
|
||||
As a final step, see if you can install your package into a Python
|
||||
virtual environment.
|
||||
|
||||
[Contents](../Contents) \| [Previous (9.2 Third Party Packages)](02_Third_party) \| [Next (The End)](TheEnd)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user