Python 导入自定义模块和包

python基本概念

python模块

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

模块让你能够有逻辑地组织你的 Python 代码段。

把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

模块能定义函数,类和变量,模块里也能包含可执行的代码。

python包

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。

简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。

如图所示是目录结构

第一种:直接导入

这里有个大前提,就是你的py执行文件和模块同属于同个目录(父级目录),如下图:

  • main.py 和 pwcong模块(包)同在python目录
  • 执行文件为main.py
  • pwcong文件夹为一个模块(包)

执行文件main.py直接 import pwcong 模块,同样如果跟main.py 同级目录下有另一个xxx.py文件,这个xxx.py文件相当于一个模块。也可以直接导入 import xxx

如上图,统一父目录下子目录中的testpack.py文件可以直接导入run(包),但是要如下这样写

import run.runfunction

第二种,通过sys模块导入自定义模块的path

  1. 先导入sys模块

  2. 然后通过sys.path.append(path) 函数来导入自定义模块所在的目录

  3. 导入自定义模块。

这种方法必须在每次用到相关的包(模块)时候都写一遍,不方便。

第三种,增加.pth文件【推荐】

site-packages目录下添加,自己的路径

在Ubuntu中查看模块搜索路径:

系统本地的python,如下所示

pc@h0167:~$ python
Python 2.7.12 (default, Nov 12 2018, 14:36:49) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 
'/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/home/sdc/.local/lib/python2.7/site-packages', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0']

Anaconda 安装的的python,如下所示

(py35) sdc@h0167:~/Code/python/run$ python
Python 3.5.6 |Anaconda, Inc.| (default, Aug 26 2018, 21:41:56) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python35.zip', 
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python3.5', 
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python3.5/plat-linux',
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python3.5/lib-dynload',
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python3.5/site-packages'] 

       可以看到有一个site-packages路径,找到找个路径,添加一个路径文件(.pth),名字自己随意。Python 在遍历已知的库文件目录过程中,如果见到一个 .pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,这样 .pth 文件说指明的库也就可以被 Python 运行环境找到。

把需要使用的包或(模块)的路径写入.pth文件中。写入完之后使用sys.path 查看是否写入成功。

注意我遇到的问题:我写入自定义包路径成功,但是依然报错找不到包。这就需要把这个包的父路径写到.pth文件中。自己没有取深究。

第四种

将要被调用的代码直接拷贝到$PYTHONHOME$\Lib\site-packages 下面,这个就跟Eclipse插件安装差不多,但是这种方法使用的少。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章