Skip to main content

Dynamically import python file to aviod mess when you are using a different directory structure from python suggested.

Project description

PyDyImport

Dynamically import python file to aviod mess when you are using a different directory structure from python suggested.

Usage

Just construct a DynamicImport instance and call DynamicImport.require

from pydyimport import DynamicImport
require = DynamicImport(__file__).require

mod = require("path/to/file.py")

If you only need some of fields in the module, use DynamicImport.require_only, which always return a tuple.

from pydyimport import DynamicImport
require_only = DynamicImport(__file__).require_only

foo, = require_only("path/to/file.py", 'foo') # still return tuple even if only one field described
Spam1, Spam2 = require_only("path/to/file.py", 'Spam1', 'Spam2')

You can inject environment variables to the modules you will import by the use of env_injector option of DynamicImport.

from pydyimport import DynamicImport

def meaningless_env_injector(path: str, code: bytes):
    return {
        '__meaning__': 'no',
    }

importer = DynamicImport(__file__, env_injector=meaningless_env_injector)
importer.require("path/to/file.py")

You can inject require* functions by RequireEnvInjector,

from pydyimport import DynamicImport
from pydyimport.injector import RequireEnvInjector
require = DynamicImport(__file__, env_injector=RequireEnvInjector(next_injector=None))

require('path/to/module.py')

or just set inject_require True.

from pydyimport import DynamicImport
require = DynamicImport(__file__, inject_require=True)

require('path/to/module.py')

If your source contains # inject_require, the require* functions will automatically inject require* functions to the module.

#!/usr/bin/env python
# inject_require

require('path/to/module.py')
Spam1, foo = require_only('path/to/module2.py', 'Spam1', 'foo')

License

GNU GENERAL PUBLIC LICENSE, version 3 or later.

    PyDyImport - dynamically importing and avoid mess in python
    Copyright (C) 2020 thisLight

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

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

pydyimport-0.0.1a3.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydyimport-0.0.1a3-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file pydyimport-0.0.1a3.tar.gz.

File metadata

  • Download URL: pydyimport-0.0.1a3.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for pydyimport-0.0.1a3.tar.gz
Algorithm Hash digest
SHA256 890fbbcb4923ceb5430930fe530a197bc6920ef4473aaba7ee4fe631f1aa4e27
MD5 feba0df528387c798975fce3e01c0767
BLAKE2b-256 985c4be979778a7ec172771112bda0759b12a9256b4156bd132b14548c2544a2

See more details on using hashes here.

File details

Details for the file pydyimport-0.0.1a3-py3-none-any.whl.

File metadata

  • Download URL: pydyimport-0.0.1a3-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for pydyimport-0.0.1a3-py3-none-any.whl
Algorithm Hash digest
SHA256 b37b20cd2689109e5e2716326cc81587f3f7771fc221d63f803c4e928a215528
MD5 1de0b727d4212c2e376227ad732cdf52
BLAKE2b-256 51a8e14c7d24a9aaf822195f345a093150e9e68b1655ff0dfe7241398eeafbc0

See more details on using hashes here.

Supported by

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