You are here:Home » Python » Python Packages

Python Packages

In this part of the Python programming tutorial, we will talk about packages.
A package is a collection of modules which have a common purpose. Technically a package is a directory which must have one special file called __init__.py.
There are several ways to manage Python code:
  • functions
  • classes
  • modules
  • packages
When we deal with large projects containing hundreds or thousands of modules, using packages is crucial. For example, we could put all database related modules in a database package, user interface code in ui package etc.
  
read.py
constants/
__init__.py
names.py
In our current working directory we have a constants directory and a read.py script.
The constants directory has two files. __init__.py file makes constants a Python package. The names.py is an ordinary module.
from names import names

print "initializing constants package"
The __init__.py file is initialized when the package is imported. Here we can control, what object will be available to the module, which imports the package.
#!/usr/bin/python

# names.py

names = ('Jack', 'Jessica', 'Robert', 'Lucy', 'Tom')
The names.py module has a tuple of 5 names.
#!/usr/bin/python

# read.py

import constants

print constants.names
Finally, the read.py script imports the constants package. We print the names tuple from the package.
$ ./read.py 
initializing constants package
('Jack', 'Jessica', 'Robert', 'Lucy', 'Tom')

We can also create subpackages. To access subpackages, we use the dot operator.
read.py
constants/
__init__.py
names.py
numbers/
__init__.py
integers.py
This is the new hierarchy. We have a subpackage called numbers.
from integers import integers
The __init__.py file in the numbers package has this one line.
#!/usr/bin/python

# integers.py


integers = (2, 3, 45, 6, 7, 8, 9)
The integers module defines a tuple of 7 integers. This tuple will be accessed from the read.py script.
#!/usr/bin/python

# read.py

import constants
import constants.numbers as int

print constants.names
print int.integers
The read.py script is modified a bit.
$ ./read.py 
initializing constants package
('Jack', 'Jessica', 'Robert', 'Lucy', 'Tom')
(2, 3, 45, 6, 7, 8, 9)

from package import * construct in a __init__.py file could cause problems on some older operating systems. Therefore a special variable __all__ has been introduced. This variable controls what objects will be imported from a package.
__all__ = ["names"]

print "initializing constants package"
Here we modify the __init__.py file in the constants directory.
#!/usr/bin/python

# read.py

from constants import names
import constants.numbers as int

print names.names
print int.integers
We also change the read.py script accordingly.
$ ./read.py
initializing constants package
('Jack', 'Jessica', 'Robert', 'Lucy', 'Tom')
(2, 3, 45, 6, 7, 8, 9)
The output is the same.
In this chapter, we have covered packages in Python.

0 comments:

Post a Comment