Developing Python Packages
James Fulton
Climate informatics researcher
Inside example_script.py
import mysklearn
Directory tree for package with subpackages
home/
|-- mysklearn <-- in same directory
| |-- __init__.py
| |-- preprocessing
| | |-- __init__.py
| | |-- normalize.py
| | |-- standardize.py
| |-- regression
| | |-- __init__.py
| | |-- regression.py
| `-- utils.py
|-- example_script.py <-- in same directory
Inside example_script.py
import mysklearn
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mysklearn'
Directory tree
home/
|-- mypackages
| |-- mysklearn <---
| |-- __init__.py
| |-- preprocessing
| | |-- __init__.py
| | |-- normalize.py
| | |-- standardize.py
| |-- regression
| |-- __init__.py
| |-- regression.py
`-- myscripts
`-- example_script.py <---
Directory tree for package with subpackages
mysklearn/
|-- __init__.py
|-- preprocessing
| |-- __init__.py
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
Directory tree for package with subpackages
mysklearn/ <-- outer directory
|-- mysklearn <--- inner source code directory
|-- __init__.py
|-- preprocessing
| |-- __init__.py
| |-- normalize.py
| |-- standardize.py
|-- regression
| |-- __init__.py
| |-- regression.py
|-- utils.py
Directory tree for package with subpackages
mysklearn/ <-- outer directory
|-- mysklearn <--- inner source code directory
| |-- __init__.py
| |-- preprocessing
| | |-- __init__.py
| | |-- normalize.py
| | |-- standardize.py
| |-- regression
| | |-- __init__.py
| | |-- regression.py
| |-- utils.py
|-- setup.py <-- setup script in outer
# Import required functions from setuptools import setup
# Call setup function setup(
author="James Fulton",
description="A complete package for linear regression.",
name="mysklearn",
version="0.1.0",
)
version number = (major number) . (minor number) . (patch number)
# Import required functions from setuptools import setup, find_packages # Call setup function setup( author="James Fulton", description="A complete package for linear regression.", name="mysklearn", version="0.1.0",
packages=find_packages(include=["mysklearn", "mysklearn.*"]),
)
pip install -e .
.
= package in current directory-e
= editableDirectory tree for package with subpackages
mysklearn/ <-- navigate to here
|-- mysklearn
| |-- __init__.py
| |-- preprocessing
| | |-- __init__.py
| | |-- normalize.py
| | |-- standardize.py
| |-- regression
| | |-- __init__.py
| | |-- regression.py
| |-- utils.py
|-- setup.py
Developing Python Packages