88 lines
2.4 KiB
Markdown
88 lines
2.4 KiB
Markdown
[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)
|
|
|
|
|
|
|
|
|
|
|
|
|