Virtualenv&&Cython

前几天入了一下cython的坑,发现其实已经算第二次了,第一次应该是swig的坑.
Cython是一个Python的C/C++的扩展库,然后就可以用Python跑C++的代码了。

VirtualEnv

首先是Virtualenv是一个虚拟的Python环境,其实它比原生的python环境复杂,但是它的特点是无论你手多么残,都只是影响虚拟环境, 还有避免你的Python环境装过多的包,已经移植方便。

virtualenv venv
它会在当前的文件夹下创建一个venv的文件夹,里面有三个子文件夹,Scripts,Include,Lib

Virtualenv&&Cython_第1张图片

其中Scripts会有一些脚本,激活虚拟环境的代码就在里面,Include里面有Python的安装包的路径,一般在site-packages里面

在windows下面,通过
venv\Scripts\activate
来激活环境,其实就是运行相应的bat脚本

Cython

这个扩展库可以由python自动生成C++代码然后再由C++生成C++的扩展模块库。所以的顺序是先由
pyx,也就是python要转化为C++的代码,用例子是

这个中文博客的蛮适合入门的 Cython学习

# hello.pyx
def say_hello():
   print "Hello World!"

然后我们通过cythonize来把它变成c++的代码

下面的代码集成了几步。

from distutils.core import setup
from Cython.Build import cythonize
setup(name = 'Hello world app', ext_modules = cythonize("hello.pyx"))

通过
python setup.py build
我们会发现文件夹下面多了一个 文件


打开以后代码有两千行,开头说明了 generated by cython

Virtualenv&&Cython_第2张图片

然后我们通过
python setup.py install把它加进我们的库里面,你会发现site-packages里面多了两个文件


pyd其实就是dll文件,它能被python调用。
然后我们能够顺利地把它当模块导入了。其中egg-info文件我们打开以后 是一些信息,文件如其名。
Virtualenv&&Cython_第3张图片

你可能感兴趣的:(Virtualenv&&Cython)