先报一下运行平台:
win10
python3.5
c编译器是vs2015
贴一下不同版本的配置方法:
Visual Studio 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%
Visual Studio 2012 (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%
Visual Studio 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%
Visual Studio 2015 (VS14): SET VS90COMNTOOLS=%VS140COMNTOOLS%
Visual Studio 2017 (VS14): SET VS90COMNTOOLS=%VS150COMNTOOLS%
先是单一文件的转换:
目录结构:
其中的data.pyx是直接修改的data.py文件的后缀名,你可以随便找个py脚本。
setup.py:
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 12 10:27:36 2018
@author: 96jie
"""
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules=cythonize("data.pyx")
)
用命令行打开当前目录,输入:
python setup.py build_ext --inplace
build_ext是指明python生成C/C++的扩展模块(build C/C++ extensions (compile/link to build directory))
--inplace指示 将编译后的扩展模块直接放在与test.py同级的目录中。
运行后的结构:
data.c是data.py转化后的C代码文件,
test.pyd是python的动态链接库,我们在使用import test时会加载
build目录编译过程中生成的临时文件
可以做一个测试:
创建test.py,输入:
import pyximport
pyximport.install()
import data
file_dir = 'H:/tensorflow_python/train_picture_new/'
a,b = data.get_files(file_dir) #get_files在data中定义,直接调用
在spyder中运行后可以看到调用成功:
多个脚本:
只需要修改setup.py:
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 12 10:27:36 2018
@author: 96jie
"""
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules=cythonize("*.pyx")
)
在同样运行:
python setup.py build_ext --inplace
新建test.py:
import pyximport
pyximport.install()
import training
运行:
成功开始训练。
这里import的是pyd文件,所以将目录改为如下,也可以运行:
18/11/13补充:
在多个文件转换的文件夹目录中,不能包含‘__init__.py’,否则会报错。
多个pyx转换成一个pyd:
新建total.pyx:
include "input_data.pyx"
include "model.pyx"
include "ttttt.pyx"
include "training.pyx"
然后将setup.py中的‘*.pyx’改为‘total.pyx’即可。