Skip to main content

Python imports without the headache

Project description

pathimport

This simple python module allows to elegantly handle project imports on python without headaches.

Why pathimport?

Using import statements inside python projects can lead to numerous headaches and subtle problems. Importing in python requires a deep understanding of how the interpreter loads other modules and scripts on runtime. A misuse of imports can lead to problems when your project is deployed outside your development environment; and even before that, imports can hide many pitfalls. This package wants to simplify the life of python users, allowing them to perform imports from other scripts of the same project effortlessly.

Installation

The pathimport module can be installed through pip.

pip install pathimport

Usage

Let's suppose to have a python project with the following structure.

module
├── submodule_a                            
│   └── script_a.py                    
├── submodule_b
│   └── script_b.py
└── common.py

Inside common.py we have defined the following function,

def fun_common():
    # do things...

while in script_a.py we have defined the following.

def fun_a():
    # do things...

To avoid the usage of relative imports, pathimport can be used to load these functions inside script_b.py.

from pathimport import set_module_root
set_module_root("..")

# from now on all the imports can be
# perfomed from the module root
from common import fun_common
from submodule_a import fun_a

if __name__ == "__main__":
    fun_common()
    fun_a()

Optionally, the module/project name can be used as a prefix.

from pathimport import set_module_root
set_module_root("..", prefix=True)

from module.common import fun_common
from module.submodule_a import fun_a

Under The Hood

To resolve the interpreter import ambiguities, set_module_root of pathimport modifies the PATH environment variable to point to the module root (or to the preceding directory if prefix is set to True). For this reason, the interpreter will be able to correctly localize and import your scripts from the filesystem, without additional problems that can arise depending on the current working directory, or if the source code is launched as a script or as a module.

Additional Resources

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pathimport-0.0.4.tar.gz (2.8 kB view details)

Uploaded Source

Built Distribution

pathimport-0.0.4-py3-none-any.whl (3.0 kB view details)

Uploaded Python 3

File details

Details for the file pathimport-0.0.4.tar.gz.

File metadata

  • Download URL: pathimport-0.0.4.tar.gz
  • Upload date:
  • Size: 2.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for pathimport-0.0.4.tar.gz
Algorithm Hash digest
SHA256 91e9afee42f604c16400edb87cf7546d0233f6564feb10409aead3b8473c4168
MD5 c18f3601aedc699457c05dde4cb7adfc
BLAKE2b-256 af97e688bb12a981f93f24655d6f713971b464540c19096db6e5d8b3ed9f90b4

See more details on using hashes here.

File details

Details for the file pathimport-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: pathimport-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 3.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for pathimport-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5fd14ca376209c06d01fc1a73e7365fa6dda989118d17b942e6e8caa8cfe530d
MD5 45a4451878159327f384a032e36e8a26
BLAKE2b-256 49cc241167f11f4e2454bc2ae68ac82e00e65c07f474e825d42f5add304eb7e0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page