python源码编译—Cython隐藏源码(windows)

1、前言

  很多时候,我们想提供我们的程序给别人使用,但又不想让别人看到我们的源代码,这样我们就需要对python代码进行编译,然后打包发送给别人使用。

2、依赖

  安装Visual Studio Installer。为了能够编译 Cython 项目,你需要确保安装了 C++ 编译工具,特别是 MSVC(Microsoft Visual C++)工具集。

具体步骤如下:

  • 在 Visual Studio Installer 中,点击页面下方的“从可用中选择”按钮。
  • 在弹出的选项中,选择 Desktop development with C++(适用于桌面开发的C++)。
  • 确保勾选包含 MSVC(Microsoft C++ 编译工具) 和 Windows 10 SDK,这是编译所需的核心工具。

3、操作示例

  编写setup.py文件,遍历文件夹,将所有需要编译的文件进行编译。

from setuptools import setup, Extension, find_packages
from Cython.Build import cythonize
import os

# 定义需要编译的所有模块
extensions = []
for root, dirs, files in os.walk("."):
    for file in files:
        if file.endswith(".py") and file not in  ["test_api.py", "api.py"]:  # 保留test_api作为调用端口
            full_path = os.path.join(root, file)
            # 转换为模块路径,去掉首个“./”以防止不规范路径
            module_name = os.path.relpath(full_path, start=".").replace("/", ".").replace("\\", ".")[:-3]
            extensions.append(Extension(module_name, [full_path]))

# 设置编译参数
setup(
    name="my_project",
    ext_modules=cythonize(extensions, language_level="3"),
    packages=find_packages()
)

  步骤一:在项目文件夹根目录下,打开命令行,运行以下代码,即可生成。将文件夹下同名的.c和.py文件删除,只保留.pyd即完成加密。你当然可以就把删除py之后的包分享给别人使用。但是可以更进一步,

python setup.py build_ext --inplace

在这里插入图片描述

  步骤二:(删除.py以及.c文件之后)继续运行以下代码,即可生成whl文件。将whl文件发送给共享的人,使用pip install your_project.whl安装即可使用。

python setup.py bdist_wheel

在这里插入图片描述

  • 安装whl库
    在这里插入图片描述
  • 测试调用
    在这里插入图片描述
### 编译Python源码Windows环境 对于在Windows环境中编译Python代码的需求,通常涉及设置合适的开发工具链以及编写构建脚本。当涉及到具体项目如PyTorch或其他依赖复杂库的项目时,则可能还需要额外配置特定版本的CUDA、Visual Studio以及其他必要的软件包。 #### 设置基础编译环境 为了准备编译所需的环境,在Windows平台上建议通过Anaconda来管理不同项目的独立运行环境[^2]。这不仅简化了Python及其扩展模块的安装过程,还能够有效隔离各个工作空间之间的潜在冲突。创建一个新的Conda虚拟环境可以确保所有组件都处于预期的状态之下: ```bash conda create --name myenv python=3.9.13 conda activate myenv ``` 接着,依据目标应用的具体需求,进一步安装其他必需项,比如Cython用于加速Python程序执行效率或是作为接口层连接底层C/C++实现的功能[^1]。 #### 安装编译器及相关工具 针对Windows平台上的C/C++编译任务,推荐采用Microsoft Visual Studio提供的MSVC编译套件。对于大多数情况而言,安装最新稳定版即可满足日常开发所需;然而某些特殊情况下(例如兼容旧版本API),则需考虑下载指定历史发行版本。此外,还需确认已勾选“使用C++的桌面开发”这一选项以获取完整的编程支持[^3]。 #### 构建与编译流程 一旦上述准备工作完成之后,便可以通过定制化的`setup.py`或类似的构建脚本来启动实际的编译操作。这里假设已经存在名为`cython_build.py`的文件负责处理整个过程中的各项细节——从扫描待转换的`.pyx`文件到最终产出优化后的二进制形式。此时只需简单调用如下指令便可触发本地即时编译动作: ```bash python cython_build.py build_ext --inplace ``` 此命令会读取当前目录下的`cython_build.py`并按照其中定义好的规则来进行相应的工作,包括但不限于将纯Python代码翻译成高效的机器语言表示形式以便提升性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值