版权声明:https://blog.csdn.net/qq_34106574 https://blog.csdn.net/qq_34106574/article/details/81166062 </div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
<div class="htmledit_views" id="content_views">
<h1><a name="t0"></a>Python有py、pyc、pyw、pyo、pyd等文件格式,其中除py其他格式起到了不暴露源码的作用,相当于c语言中的动态库。</h1>
1,Python生成pyc文件
1.1生成单个pyc文件
对于py文件,可以执行下面命令来生成pyc文件,转化后的.pyc文件将在当前目录的__pycache__文件夹下.
python -m compileall <dir>
另外一种方式是通过代码来生成pyc文件,同样转化后的.pyc文件将在当前目录的__pycache__文件夹下.
-
import py_compile
-
py_compile.compile(
'/path/to/foo.py')
1.2批量生成pyc文件
命令行为:
python -m compileall <dir>
针对一个目录下所有的py文件进行编译。python提供了一个模块叫compileall,具体请看下面代码:
-
import compileall
-
compileall.compile_dir(
r'/path')
2,Python生成pyd文件
利用pip安装Cython安装:
pip install Cython --install-option="--no-cython-compile"
或者自己下载安装:https://pypi.python.org/pypi/Cython/
写一个测试用的py文件a.py
-
def test():
-
print "Hello World!"
创建setup.py文件
-
from distutils.core import setup
-
from Cython.Build import cythonize
-
setup(name = 'Hello world',
-
ext_modules = cythonize("a.py"))
编译
python setup.py build //生成.c文件
python setup.py install //生成pyd文件,根据运行过程提示,pyd被生成到了python根目录下Lib\site-packages中,可以直 接使用
3.
Python生成pyd文件(2)
安装cython
pip install cython
如果安装没提示错误信息说明,上一步环境正确,并且cython安装正确。
安装easycython
试了一些方法和库,这个最方便只要一行代码就可以搞定。
https://github.com/cjrh/easycython
pip install easycython
这个模块也会自动安装依赖的cython,如果上步安装cython失败,也可以直接尝试安装easycython来试。
转换步骤
将.py文件重命名为.pyx
运行命令
easycython *.pyx
上面会将当前文件夹下所有的.pyx文件生成为.pyd
如果只生成单个的main.pyx
main.pyx内容:
def test(): print('Hello sanfenzui!')
开始生成:
easycython main.pyx
生成文件main.cp35-win_amd64.pyd
手动将其重命名为main.pyd
注意:这里重命名时去掉“.cp35-win_amd64”不要更改前面的名字,否则不能正常引用
然后python环境下
import main #保证当前文件夹下没有main.py或者mian.pyc
main.test()