网站所需的主要功能,wordpress数据库中文,免费的网站托管,外贸婚纱网站1.为什么要将python打包为.so文件#xff1f;
保护源码
2.实战例子
a.安装相应的包
pip install cython 验证安装是否成功
cython --version
b.实战的文件目录和内容 hi.py
# This is a sample Python script.# Press ShiftF10 to execute it or replace it with your…1.为什么要将python打包为.so文件
保护源码
2.实战例子
a.安装相应的包
pip install cython 验证安装是否成功
cython --version
b.实战的文件目录和内容 hi.py
# This is a sample Python script.# Press ShiftF10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.def print_hi(name):# Use a breakpoint in the code line below to debug your script.print(fHi, {name}) # Press CtrlF8 to toggle the breakpoint.# Press the green button in the gutter to run the script.
if __name__ __main__:print_hi(PyCharm)# See PyCharm help at https://www.jetbrains.com/help/pycharm/hello.py
def hello(name):print(hello name)
bye.py
def bye(name):print(bye name)setup.py
把需要转换的py文件都放进去
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules cythonize([hi.py, hello.py, bye.py]))terminal运行命令
python setup.py build_ext 运行log
Compiling hi.py because it changed.
Compiling hello.py because it changed.
Compiling bye.py because it changed.
[1/3] Cythonizing bye.py
/home/huanglu/anaconda3/envs/segment-system/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive language_level not set, using 3str for now (Py3). This has changed from earlier releases! File: /home/huanglu/Desktop/liubin/so-test/bye.pytree Parsing.p_module(s, pxd, full_module_name)
[2/3] Cythonizing hello.py
/home/huanglu/anaconda3/envs/segment-system/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive language_level not set, using 3str for now (Py3). This has changed from earlier releases! File: /home/huanglu/Desktop/liubin/so-test/hello.pytree Parsing.p_module(s, pxd, full_module_name)
[3/3] Cythonizing hi.py
/home/huanglu/anaconda3/envs/segment-system/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive language_level not set, using 3str for now (Py3). This has changed from earlier releases! File: /home/huanglu/Desktop/liubin/so-test/hi.pytree Parsing.p_module(s, pxd, full_module_name)运行结果 可以发现多了几个.c文件和build文件夹
build文件夹中 复制到根目录 在根目录里 写一个demo.py
from hi import print_hi
from hello import hello
from bye import byeprint_hi(K.D.)
hello(LeBron)
bye(Kobe) 运行
Hi, K.D.
hello LeBron
bye KobeProcess finished with exit code 0 把hi.py,hello.py,bye.py删除再执行demo.py可以得到同样的结果
即 此时已经使用到了.so文件而不是原来的.py文件 如果.py在不同文件夹中则在不同文件夹里面执行类似操作。
待续。。