为二进制扩展扩展扩展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需要帮助在记忆游戏中随机化数字   java将术语频率添加到lucene索引   LWJGL中的java多线程块渲染   java如何获取序列。JDBC中SQL的nextval?   java无法解析或不是类继承中的字段   java为不同的策略注入相似的依赖类型   泛型组件,用于检查一个java。朗,反思一下。类型可以铸造到另一个?   方法java程序:从用户字符串输入中添加整数   使用KMS的java弹性beanstalk环境变量加密   java如何使用JSONLIB将bean转换为JSON   java access对象的封装对象   JavaJDK10无法导入javax。xml。Eclipse中的命名空间