Project: magicalimport

importing a module by physical file path

Project Details

Latest version
0.9.1
Home Page
https://github.com/podhmo/magicalimport
PyPI Page
https://pypi.org/project/magicalimport/

Project Popularity

PageRank
0.001890719479553127
Number of downloads
64584

magicalimport

.. image:: https://travis-ci.org/podhmo/magicalimport.svg?branch=master :target: https://travis-ci.org/podhmo/magicalimport

Importing a module from physical file path.

examples

these files are existed, then..

.. code-block:: bash

$ tree . ├── a │   └── b │   └── c │   └── foo.py └── main.py

4 directories, 3 files

a/b/c/foo.py

.. code-block:: python

name = "foo" _age = "secret"

.. code-block:: python

from magicalimport import import_from_physical_path

importing foo.py as the module named foo2

foo = import_from_physical_path("./a/b/c/foo.py", as_="foo2") print(foo.name)

cached in sys.modules, so it is ok.

import foo2 print(foo2.name)

here option ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

from magicalimport import import_from_physical_path

import_from_physical_path("bar.py", here="/tmp/foo", as_="bar")

star import ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

from magicalimport import import_from_physical_path from magicalimport import expose_all_members

something of like a from foo import *

expose_all_members(import_from_physical_path("./a/b/c/foo.py")) print(name) # "foo"

print(age) # NameError.. because expose_all_members() doesn't expose the symbols started by ""

or

from magicalimport import expose_members expose_members(import_from_physical_path("./a/b/c/foo.py"), members=["_age"]) print(_age) # "secret"

0.9.1

  • import_module() and import_symbol()'s cwd is True

0.9.0

  • revert default behaviour (detail https://github.com/podhmo/magicalimport/pull/18 )

0.8.1

  • cwd option

0.8.0

  • default behaviour is changed, from now, if here option is omitted, treated as here=__file__ on caller module.
  • ( previous behaviour is here=os.getcwd() )

0.7.3

  • skip needless init.py creation, in some cases

0.7.2

  • fix directly import module handling is not enough, now, treated as a same module

0.7.1

  • fix permission error, and same file, treated as a same module

0.7.0

  • fix same file, treated as a same module

0.6.0

  • fix module_id is not stored in sys.modules, on exec_module()

0.5.0

  • raised exception adjustment

0.3.0

  • ns option in import_symbol

0.2.1

  • here option is supported

0.2

  • python2 support

0.1

  • first release