Module Directory Structure¶
In this tutorial, we will cover the process of transitioning your code from Jupyter notebooks to a structured Python module. The focus will be on creating a module named “gcpds” with a chosen submodule.
Structuring Your Module¶
Your module structure should follow this pattern:
gcpds/
└── submodule/
├── init.py
├── optional_file_1.py
└── optional_file_2.py
Using __init__.py
¶
The __init__.py
file is suitable for simpler submodules.
Example: Simple Class in ``__init__.py``
Suppose you have a basic class SimpleClass
in your Jupyter notebook. Here’s how to include it in __init__.py
:
# gcpds/submodule/__init__.py
class SimpleClass:
def __init__(self):
self.message = "Hello from SimpleClass"
def greet(self):
return self.message
Importing from ``__init__.py``
To use SimpleClass
in your script:
from gcpds.submodule import SimpleClass
simple_obj = SimpleClass()
print(simple_obj.greet()) # Outputs: Hello from SimpleClass
Using optional_file_1.py
¶
For more complex functionalities, additional files like optional_file_1.py
are used.
Example: Class in ``optional_file_1.py``
Imagine you have a more complex class, ComplexClass
, in your Jupyter notebook. Here’s how to include it in optional_file_1.py
:
# gcpds/submodule/optional_file_1.py
class ComplexClass:
def __init__(self, param):
self.param = param
def complex_method(self):
# Complex implementation
return f"Complex output with {self.param}"
Importing from ``optional_file_1.py``
To use ComplexClass
in your script:
from gcpds.submodule.optional_file_1 import ComplexClass
complex_obj = ComplexClass("parameter")
print(complex_obj.complex_method()) # Outputs: Complex output with parameter