将Python文件转换为pyd/so文件的工具
Project description
py2pyd - Python转pyd/so工具
将Python文件(.py)转换为编译后的Python扩展模块(.pyd或.so),使用Cython进行编译。
功能特点
- 支持单个Python文件的转换
- 支持目录批量转换
- 支持递归处理子目录
- 转换后可选择是否删除原始Python文件
- 保留
__init__.py文件内容处理 - 自动检测依赖并提供错误处理
- 针对不同操作系统自动选择正确的扩展名(Windows为.pyd,Linux/macOS为.so)
- 美观的进度条显示
安装
pip install gl-py2pyd
系统要求
你的系统需要有合适的C/C++编译器:
- Windows: 需要安装 Visual C++ Build Tools
- Linux: 需要安装 GCC
- macOS: 需要安装 XCode 命令行工具(
xcode-select --install)
使用方法
命令行使用
# 转换单个文件
py2pyd file.py
# 转换目录下所有Python文件
py2pyd folder/
# 递归转换目录及其子目录中的所有Python文件
py2pyd -r folder/
# 转换后删除原始Python文件
py2pyd --remove file.py
# 组合使用
py2pyd -r --remove folder/
# 查看版本
py2pyd -v
# 查看帮助
py2pyd -h
输出示例
📄 处理文件: test.py
转换进度 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%
✅ 处理完成!成功: 1 个文件
🎉 全部转换成功!
作为模块导入
# 转换单个文件
from module.single_py2pyd import py2pyd
success = py2pyd('path/to/your/file.py')
if success:
print("转换成功")
else:
print("转换失败")
# 转换整个目录
from module.fileConversion import FileConversion
converter = FileConversion()
success = converter.get_all_file('path/to/your/directory', need_remove=False)
print(f"成功:{converter.success_count} 个文件,失败:{converter.fail_count} 个文件")
错误处理
工具会自动检测必要的依赖并提供错误信息。常见问题包括:
- 缺少Cython: 运行前会检查Cython是否已安装,若未安装则会提示安装
- 编译失败: 可能是缺少编译器或者Python文件内容有问题
优化的编译选项
本工具针对不同操作系统和环境进行了编译选项优化:
- 设置语言级别: 显式设置Cython的
language_level为3,避免语言级别警告 - 禁止无用代码警告: 添加适当的编译选项(
-Wno-unreachable-code)以禁止Cython生成的C代码中的不可达代码警告 - 修复Conda/Miniconda链接警告: 在Conda环境中自动调整链接选项,避免重复的rpath警告
注意事项
- 确保已安装Cython和适当的编译器
- 转换后的so/pyd文件会保留在原始Python文件的相同目录中
- 在Windows系统上生成.pyd文件,在Linux/macOS上生成.so文件
- 对于复杂的Python项目,可能需要额外的编译选项
License
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gl_py2pyd-0.2.0.tar.gz
(7.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gl_py2pyd-0.2.0.tar.gz.
File metadata
- Download URL: gl_py2pyd-0.2.0.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dde501a016341542c472a223d0ae61b301ba21f6ba17a6534f6a267135826013
|
|
| MD5 |
98d24a6f9dcde89529240fea7eecd0d5
|
|
| BLAKE2b-256 |
e454f6f420585232501d889841f72f927a15744ec931927f34cc8e828c295ea7
|
File details
Details for the file gl_py2pyd-0.2.0-py3-none-any.whl.
File metadata
- Download URL: gl_py2pyd-0.2.0-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b91d7e5c38dd832e49e2771e4579833abfa07809163158503443e0e41ee521d
|
|
| MD5 |
6d00af361f27b0a0a03c2d89c7f0cc92
|
|
| BLAKE2b-256 |
5341be5a2e95a31ec9125c10c79ec34fdd70fe2683009f53163170edf942ba26
|