【Python】python引入外部文件

来源:互联网 发布:windows 空间音效 编辑:程序博客网 时间:2024/06/16 07:47

1. 如果引入文件是在子目录,如:

folder

------tobeinvodedA.py

------tobeinvodedB.py

------tobeinvodedC.py

toinvoke.py

这种情况,在folder 下新建一个__init__.py 的空文件,此时的folder不再是一个普通的文件夹,而是一个包 package。现在像这样

folder #文件夹 现在的性质为一个python包package 

------__init__.py

------tobeinvoded.py

------tobeinvodedA.py

------tobeinvodedB.py

------tobeinvodedC.py

toinvoke.py

这样在toinvoke.py 中引入

import folder.toveinvoked 或 from folder.tobeinvoked import *

即可

2. 如果是外部目录,如folderB中的模块要调用folderA中的模块,方法同上

folderA 

------tobeinvoded.py

------tobeinvodedA.py

------tobeinvodedB.py

------tobeinvodedC.py

folderB 

--------toinvoke.py

这样在toinvoke.py 中引入

import folder.toveinvoked 或 from folder.tobeinvoked import *

即可

3. Python的包搜索路径

Python会在以下路径中搜索它想要寻找的模块:

(1) 程序所在的文件夹

(2) 标准库的安装路径

(3) 操作系统环境变量PYTHONPATH所包含的路径

将自定义库的路径添加到Python的库路径中去,有如下两种方法:

(1) 动态的添加库路径。在程序运行过程中修改sys.path的值,添加自己的库路径

import sys

sys.path.append(r'your_path') 

sys模块是使用c语言编写的,因此字符串支持 '\n', '\r', '\t'等来表示特殊字符。所以最好写成: sys.path.append('c:\\xxx\\b.py') 避免转义

(2) 在Python安装目录下的\Lib\site-packages文件夹中建立一个.pth文件,内容为自己写的库路径。示例如下

E:\\work\\Python\\http

参考

4. import上一级目录的模块

python中,import module会去sys.path搜索,sys.path是个列表,并且我们可以动态修改。

要import某个目录的module,我们sys.path.insert(0,somedir)来加入搜索路径,就可以import了。

既然这样,要import上一级目录的module,可以sys.path.insert(0,parentdir)。

不过这种写绝对路径的方式,如果文件放到其它地方,就不行了。 

所以用动态方法来获取上一级目录。

import os,sys parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0,parentdir)  

为什么用sys.path.insert(0,parentdir) 而不是用sys.path.append(parentdir)呢。

因为是遍历搜索路径的,所以如果在其它路径里也有个同名的module,会import错。用sys.path.insert(0,parentdir)可以确保先搜索这个路径。


原创粉丝点击