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