python自定义模块


总结了几种方法供大家参考:
1、导入自定义模块
1.1、导入文件与当前文件在同一目录
直接引入,import m_path 或 from m_path import *
m_path.py:
def getfile():
print('get file:\n')
test.py:
import m_path
m_path.getfile()

1.2、导入文件在同级目录下某文件夹folder下
在folder下,建立空__init__.py的文件,将文件夹转为包。然后引用:
from m_os import m_path 或 from m_os.m_path import *


1.3、相对路径导入
将自定义的包放在搜索目录可见的范围内。
Python会在以下路径中搜索它想要寻找的模块:
1. 程序所在的文件夹
2. 标准库的安装路径
标准库安装路径为 $PYTHONHOME$\Lib\site-packages 。可将包直接放到此目录下,也可在此目录下新建一个.pth文件,比如说是MyPackage.pth,里面的内容是你的包的绝对路径比如:E:/PythonPrj。(推荐做法)
3. 操作系统环境变量PYTHONPATH所包含的路径
将自定义库的路径添加到Python的库路径中去,动态的添加库路径。在程序运行过程中修改sys.path的值,添加自己的库路径。
import sys
sys.path.append('your_path')
对执行了sys.path.append命令的当前Python运行环境起作用,对其他运行环境不起作用,也即“一次性”的。

2、详 解Python中的from..import绝对导入语句
python2.5以来实现:导入一个模块可以指定使用绝对或者包相对的导入。绝对导入使用一个 from __future__ import absolute_import,可以使import string 将总是寻找基本库,而不是用户定义,以避免混淆。
示例1:
例如:在模块A.B.C中的代码:
from . import D # 导入A.B.Dfrom .. import E # 导入A.Efrom ..F import G # 导入A.F.G,.. 和 F是连着的,中间没有空格
.代表当前目录,..代表上一层目录,...代表上上层目录。

示例2:
目录结构:
package/
__init__.py
subpackage1/
__init__.py
moduleX.py
moduleY.py
subpackage2/
__init__.py
moduleZ.py
moduleA.py
在subpackage1/moduleX.py 或者 subpackage1/__init__.py中可以这样导入module:
from .moduleY import spamfrom .moduleY import spam as hamfrom . import moduleYfrom ..subpackage1 import moduleYfrom ..subpackage2.moduleZ import eggsfrom ..moduleA import foofrom ...package import barfrom ...sys import path
注意,from ...sys import path是合法的,但是不建议。直接from sys import path就行了。


3、作为脚本来运行程序
所有的模块都有一个内置属性__name__,如果import一个模块,那么模块的__name__属性返回值一般是文件名。如果直接运行Python程序,__name__的值将是一个"__mian__"。
根据上面程序做一个测试:
def func(a, b):
    return a * b
class MyClass:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def method(self):
        return self.a * self.b
print __name__
# python test.py
__main__
创建一个test2.py,导入这个模块:
import test
# python test2.py
test
test就是这个模块名。根据这个特性可以判断是手动执行这个程序还是导入包。
if __name__ == "__main__":
    print "我在手动执行这个程序..."

4、github上模块地址

5、查找python安装路径
特别是linux系统,装了多个python,有时候找不到python的绝对路径,有时候装了个django,又找不到django安装到哪里了。。当然查看的方法有很多种,这里列出几种,供没有经验的人参考下。
G:\code\moniter>python -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())"
C:\Python27\Lib\site-packages

G:\code\moniter>python -c "import os; print os.__file__"
C:\Python27\lib\os.pyc

G:\code\moniter>python -c "import sys; print sys.executable"
C:\Python27\python.exe

猜你喜欢

转载自blog.csdn.net/jingbo18/article/details/78535821