如何调用另一个python文件中的代码

时间:2024-01-08 14:39:08

模块的搜索路径

模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自己的模块或包的路径,可以动态的加入(sys.path.apend)即可。下面是sys.path在Windows平台下的添加规则。

1、sys.path第一个路径往往是主模块所在的目录。在交互环境下添加一个空项,它对应当前目录。

2、如果PYTHONPATH环境变量存在,sys.path会加载此变量指定的目录。

3、我们尝试找到Python Home,如果设置了PYTHONHOME环境变量,我们认为这就是Python Home,否则,我们使用python.exe所在目录找到lib/os.py去推断Python Home。

如果我们确实找到了Python Home,则相关的子目录(Lib、plat-win、lib-tk等)将以Python Home为基础加入到sys.path,并导入(执行)lib/site.py,将site-specific目录及其下的包加入。

如果我们没有找到Python Home,则把注册表Software/Python/PythonCore/2.5/PythonPath的项加入sys.path(HKLM和 HKCU合并后加入),但相关的子目录不会自动添加的。

4、如果我们没有找到Python Home,并且没有PYTHONPATH环境变量,并且不能在注册表中找到PythonPath,那么缺省相对路径将加入(如:./Lib;./plat-win等)。

总结如下

当在安装好的主目录中运行Python.exe时,首先推断Python Home,如果找到了PythonHome,注册表中的PythonPath将被忽略;否则将注册表的PythonPath加入。

如果PYTHONPATH环境变量存在,sys.path肯定会加载此变量指定的目录。

如果Python.exe在另外的一个目录下(不同的目录,比如通过COM嵌入到其他程序),Python Home将不推断,此时注册表的PythonPath将被使用。

如果Python.exe不能发现他的主目录(PythonHome),并且注册表也没有PythonPath,则将加入缺省的相对目录。

如何调用另一个python文件中的代码

无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等,总之要操作其他文件中的代码,在java中,只要在同一个文件目录下,我们就不需要通过import导入,但是在Python中,我们就需要通过import来进行导入,这样我们才能应用其他文件中定义的函数和数据等代码。 对于刚接触python的我们,这是我们需要掌握的。

下面就以两个文件为例,例如我们有a.py和b.py两个文件,当我们需要在b.py文件中应用a.py中的func( )函数时,应该如何做呢,有两种情况,分别为在同一文件目录下和不在同一目录下进行说明。

同一文件目录下

在b.py文件中用下面两条语句即可完成对a.py文件中func( )函数的调用

import a #引用模块
a.func( )

或者是

import a#应用模块
from a import func #引用模块中的函数
func() #这里调用函数就不需要加上模块名的前缀了

不同文件目录下

若不在同一目录,python查找不到,必须进行查找路径的设置,将模块所在的文件夹加入系统查找路径

import sys
sys.path.append(‘a.py所在的路径’)
import a
a.func()