为二进制扩展扩展扩展setuptools的python库。

milksnake的Python项目详细描述


#milksnake

<;a href=“https://pypi.python.org/pypi/milksnake”>;<;img src=“https://img.shields.io/pypi/v/milksnake.svg”alt=“”>;<;/a>;
<;a href=“https://travis ci.org/getsentry/milksnake”>;<;img src=“https://travis-ci.org/getsentry/milksnake.svg?branch=master“a lt=”>;<;a ref=”https://github.com/getsentry/milksnake/blob/master/license“>;<;img src=”https://img.shields.io/pypi/l/milksnake.svg“alt=”>;


milksnake是setuptools的扩展,允许您以最可移植的方式在python轮中分发动态链接库。可以想象。

它为您提供了一个钩子来调用自己的构建过程,然后获取生成的动态链接库。



已经有其他项目使python和本机库一起运行,但这一个不同。与构建python
扩展模块的其他项目不同,此项目的目标是构建常规的本地库,然后在运行时用cffi加载这些库。为什么不直接使用cffi呢?因为
cffi的setuptools支持本身不能正确地使用这些控制盘(它不能为共享库提供构建和正确标记控制盘的方法),而且
它也不能提供调用外部构建过程的好方法(如
makefile,构建rust二进制文件等)



*平台:Linux、Mac、Windows
*setuptools命令:`bdist_wheel`、`build`、`build_ext`、`develop`
*`pip install--可编辑。`
*通用控制盘(`package-py2.py3 none platform.whl`);如果包中还包含与libpython链接的



此示例显示如何使用它生成rust项目:


path='./rust'


spec.add_cffi_module(
module_path='example.'u native',
dylib=lambda:build.find_dylib('example',in_path='target/release'),
header_filename=lambda:build.find_header('example.h',in_path='target'),
rtld_flags=['now',“nodelite”]



安装(
名称='example',
版本='0.0.1',
软件包=['example'],
压缩安全=false,
平台='any',
安装程序需要=['milksnake'],
安装程序需要=['milksnake'],
milksnake_tasks=[
build_native
]

`````

lib


def test():
32{
42








/>```

,最后是build.rs文件:

``生锈
外部板条箱cbindgen;


使用std::env;

让板条箱dir=env::var(“货物清单dir”).unwrap();
让mut config:cbindgen::config=default::default();
config.language=cbindgen::language::c;
cbindgen::使用配置(crate-dir,config)
.unwrap()
.write-to-u文件(“target/example.h”);
}
````



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java程序中的方法?   java BufferedReader未正确读取数据   java无法正确使用(@Inject)   java非法参数异常如何声明方法中定义的静态变量   java如何设置Notes文档中RichTextItem字段的内容?   具有特定扩展名的java Android拾取文件(pdf和docx)   netbeans上的尸检显示java版本错误   将数字匹配到另一个数组中   在java中用CSV解析器实现键值解析器   JavaSpring安全加密BadPaddingException:给定的最后一个块没有正确填充。如果在解密过程中使用了坏密钥,则会出现此类问题   JavaFX中的java KeyCodeCombination控件+左键或Ctrl+右键   java映射什么。放回?   java自定义对话框类不显示该对话框   java如何在eclipse中查看现有类?   java Android:无法集成抽屉导航,因为已经在为Google地图调用extends