Python的路径及C语言扩展
2008-02-18 17:02
295 查看
1、 引入
Python语言的核心文件只有一个PythonXX.dll,XX是版本号,所有的.py、.pyc、.pyo文件都是用Pythonxx.dll进行解释执行的。而python.exe、Pythonw.exe只是对为pythonxx.dll提供了一个解释器窗体。
由于pythonxx.dll解释执行py文件时会在一定的路径下查找模块,而我关心的就是pythonxx.dll到底从哪些路径进行查找。
2、 Pyhon.exe调用哪个pythonxx.dll
执行python.exe时,python会按照什么样的顺序查找pythonxx.dll呢?经测试发现,如果python.exe当前目录下有pythonxx.dll则调用此dll,如果没有,则按照PATH路径进行查找。
3、 C语言扩展
Pyton和C分别有着各自的优缺点,用Python开发程序速度快,可靠性高,并且有许多现成模块可供使用,但执行速度相对较慢;C语言则正好相反,其执行速度快,但开发效率低。为了充分利用两种语言各自的优点,比较好的做法是用Python开发整个软件框架,而用C语言实现其关键模块。
具体的例子可以参照python自带的example_nt例子。我们假设在Windows下操作,编译成功后,会生成example.dll文件,将example.dll更名为example.pyd,将文件拷贝到python.exe/dlls下,打开python.exe:
>>import example
>>example.foo()
Hello world!
>>
到此就可以在Python下直接调用C语言的Dll了。
经测试发现,example.pyd也可以放在python.exe同级目录下,或PATH目录中,但后缀名必须是pyd而不是dll。
注意的是:
PyMODINIT_FUNC
initexample(void)
{
Py_InitModule("eexample", example_methods);
}
代码中的initexample是固定形式,并且导出的文件名也必须是模块名.pyd。如当执行:import example时,python.exe会首先查找example.dll,如果存在则调用example.dll中的initexample函数导入模块内的函数或数据,所以相应的名字必须按照此规则进行命名。
Python语言的核心文件只有一个PythonXX.dll,XX是版本号,所有的.py、.pyc、.pyo文件都是用Pythonxx.dll进行解释执行的。而python.exe、Pythonw.exe只是对为pythonxx.dll提供了一个解释器窗体。
由于pythonxx.dll解释执行py文件时会在一定的路径下查找模块,而我关心的就是pythonxx.dll到底从哪些路径进行查找。
2、 Pyhon.exe调用哪个pythonxx.dll
执行python.exe时,python会按照什么样的顺序查找pythonxx.dll呢?经测试发现,如果python.exe当前目录下有pythonxx.dll则调用此dll,如果没有,则按照PATH路径进行查找。
3、 C语言扩展
Pyton和C分别有着各自的优缺点,用Python开发程序速度快,可靠性高,并且有许多现成模块可供使用,但执行速度相对较慢;C语言则正好相反,其执行速度快,但开发效率低。为了充分利用两种语言各自的优点,比较好的做法是用Python开发整个软件框架,而用C语言实现其关键模块。
具体的例子可以参照python自带的example_nt例子。我们假设在Windows下操作,编译成功后,会生成example.dll文件,将example.dll更名为example.pyd,将文件拷贝到python.exe/dlls下,打开python.exe:
>>import example
>>example.foo()
Hello world!
>>
到此就可以在Python下直接调用C语言的Dll了。
经测试发现,example.pyd也可以放在python.exe同级目录下,或PATH目录中,但后缀名必须是pyd而不是dll。
注意的是:
PyMODINIT_FUNC
initexample(void)
{
Py_InitModule("eexample", example_methods);
}
代码中的initexample是固定形式,并且导出的文件名也必须是模块名.pyd。如当执行:import example时,python.exe会首先查找example.dll,如果存在则调用example.dll中的initexample函数导入模块内的函数或数据,所以相应的名字必须按照此规则进行命名。
相关文章推荐
- 用C语言扩展Python的功能
- 使用C语言扩展Python(一)
- .pth 文件扩展python环境路径
- windows 下 使用codeblocks 实现C语言对python的扩展
- 用C语言扩展Python的功能
- 使用C语言扩展Python程序的简单入门指引
- 『Python CoolBook』C扩展库_其六_从C语言中调用Python代码
- 小结两种在Python中导入C语言扩展库的方法
- 使用C语言扩展Python(二)
- 使用C语言扩展Python(五)
- 用C语言扩展Python的功能
- 使用.pth文件扩展python环境路径
- 用C语言扩展Python的功能
- Python:C语言扩展
- 用C语言扩展Python的功能
- 用C语言扩展Python的功能
- 使用C语言编写Python扩展——创建自定义类型(1)
- 用C语言扩展Python的功能
- 使用vs2008实现C语言对Python3的扩展
- 用C语言扩展Python的功能