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
-
先导入sys模块
-
然后通过
sys.path.append(path)
函数来导入自定义模块所在的目录 -
导入自定义模块。
这种方法必须在每次用到相关的包(模块)时候都写一遍,不方便。
第三种,增加.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插件安装差不多,但是这种方法使用的少。