【python】导入自定义模块

python包含子目录中的模块方法比较简单,关键是可以在sys.path里面找到通向模块文件的路径。
python

下面将具体介绍几种经常使用状况:app

(1)主程序与模块程序在同一目录下:spa

以下面程序结构:code

`-- src接口

    |-- mod1.pyit

    `-- test1.pyclass

    若在程序test1.py中导入模块mod1, 则直接使用import mod1或from mod1 import *;test


(2)主程序所在目录是模块所在目录的父(或祖辈)目录import

以下面程序结构:module

`-- src

    |-- mod1.py

    |-- mod2

    |   `-- mod2.py

    `-- test1.py

    若在程序test1.py中导入模块mod2, 须要在mod2文件夹中创建空文件__init__.py文件(也能够在该文件中自定义输出模块接口); 而后使用 from mod2.mod2 import * 或import mod2.mod2.


(3)主程序导入上层目录中模块或其余目录(平级)下的模块

以下面程序结构:

`-- src

    |-- mod1.py

    |-- mod2

    |   `-- mod2.py

    |-- sub

    |   `-- test2.py

    `-- test1.py

    若在程序test2.py中导入模块mod1和mod2。首先须要在mod2下创建__init__.py文件(同(2)),src下没必要创建该文件。而后调用方式以下:

   下面程序执行方式均在程序文件所在目录下执行,如test2.py是在cd sub;以后执行python test2.py

而test1.py是在cd src;以后执行python test1.py; 不保证在src目录下执行python sub/test2.py成功。

   import sys
       sys.path.append("..")
   import mod1
   import mod2.mod2


(4)

    import sys;
    if not "/home/a/" in sys.path:
        sys.path.append("/home/a/")
    if not 'b' in sys.modules:
        b = __import__('b')
    else:
        eval('import b')
        b = eval('reload(b)')
相关文章
相关标签/搜索