windows平台 python生成 pyd文件

Python的文件类型介绍:

.py       python的源代码文件

.pyc     Python源代码import后,编译生成的字节码

.pyo     Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言

.pyd     Python的动态链接库(Windows平台)

.py, .pyc, .pyo 运行速度几乎无差别,只是pyc, pyo文件加载的速度更快,不能用文本编辑器查看内容,反编译不太容易

 

本文的目标是将test.py文件生成test.c文件,然后将test.c文件作为Python源码的一部分,重新编译生成Python,使用时直接import test即可使用test模块。

 

Cython基本介绍:

文档中这样总结Cython:

Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex). It makes writing C extensions for Python as easy as Python itself.

是一个Python编程语言的编译器,写C扩展就像写Python代码一样容易。

其最重要的功能是:

  • write Python code that calls back and forth from and to C or C++ code natively at any point.

即 将Python代码翻译为C代码。之后就可以像前面文章介绍的C语言扩展Python模块使用这些C代码了。

 

 

Cython基本用法:

 在使用Cython编译Python代码时,务必要安装C/C++编译器,微软为Python提供了专用的编译器Microsoft Visual C++ Compiler for Python 2.7(包含32位和64位) 下载地址: http://aka.ms/vcpython27 百度云链接: https://pan.baidu.com/s/143jxjyQFtb_NCIWXt0DVWA 提取码: 5ick 

1.下载完成并安装。以本机为例,安装完成后的路径为: 

1
C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C + +  for  Python\ 9.0

2.修改python代码

   修改python安装目录下Lib\distutils\msvc9compiler.py文件(如有必要可能msvccompiler.py文件也需要做相应更改,视系统而定),找到get_build_version方法直接return 9.0

   然后再找到find_vcvarsall方法直接返回vcvarsall.bat的路径(以自己机器安装后的路径为准)

  例如  return r'C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat'

2. 安装Cython库

   pip install Cython

3. 编写一个测试代码文件test.py放在D:/test/test.py

   然后在同一目录下,新建一个setup.py文件,内容如下:

  cythonize()是Cython提供将Python代码转换成C代码的API,

  setup是Python提供的一种发布Python模块的方法。

4. 使用命令行编译Python代码:

3.上述完成之后就可以在windwos下正常编译python的C扩展。执行如下命令

1
python setup.py install

当然也可以建立一个windows的二进制包:

1
python setup.py bdist_wininst

当然也可以直接编译到当前目录:

1
python setup.py build_ext --inplace

build_ext是指明python生成C/C++的扩展模块(build C/C++ extensions (compile/link to build directory))

--inplace指示 将编译后的扩展模块直接放在与test.py同级的目录中。

 
 

参考资料:

https://www.cnblogs.com/jianmu/p/7497274.html?utm_source=debugrun&utm_medium=referral

http://www.cnblogs.com/lazyboy/p/4017567.html






转载于:https://www.cnblogs.com/shuangpang/p/10528694.html

首先,你需要安装Boost和Python以及Boost.Python库。然后,按照以下步骤操作: 1. 编写C++代码并使用Boost.Python库将其封装为Python模块。 例如,以下是一个简单的C++代码示例: ```c++ #include <boost/python.hpp> char const* greet() { return "Hello, world!"; } BOOST_PYTHON_MODULE(example) { using namespace boost::python; def("greet", greet); } ``` 这个代码定义了一个名为"greet"的函数,返回一个字符串,然后使用Boost.Python库将其封装为Python模块。 2. 使用CMake创建项目并将其编译为pyd文件。 为了编译生成pyd文件,你需要使用CMake来创建项目,使用Boost和Python的头文件和库文件,并将C++代码编译为pyd文件。 以下是一个CMakeLists.txt文件示例: ```cmake cmake_minimum_required(VERSION 3.0) project(example) find_package(Boost REQUIRED COMPONENTS python) find_package(PythonLibs REQUIRED) include_directories(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) add_library(example SHARED example.cpp) target_link_libraries(example ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) set_target_properties(example PROPERTIES SUFFIX ".pyd") ``` 这个文件指定了编译项目所需的Boost和Python库,将C++代码编译为pyd文件,并设置pyd文件的后缀名为".pyd"。 3. 编译并生成pyd文件。 使用以下命令编译项目: ``` cmake . make ``` 这将生成名为"example.pyd"的文件,可以在Windows上使用Python调用。 注意:在Windows上,你需要将Boost库和Python库添加到PATH环境变量中,或者将它们复制到生成pyd文件所在的目录中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值