从运行在linux、macos或bsd下的python脚本调用windows dll中的例程

zugbruecke的Python项目详细描述


Build Status: master / releaseDocumentation Status: master / releaseBuild Status: development branchDocumentation Status: development branchProject License: LGPLv2Project Development StatusAvailable on PyPi - the Python Package IndexAvailable on PyPi - the Python Package Index

zugbruecke repository

概要

zugbruecke是一个实验性的python模块(目前正在开发status 3/alpha)。 它允许从运行在 unices/unix类系统如linux、macos或bsd。 zugbruecke被设计成一个drop-in替换python标准库的cTypes模块。 Zugbruecke是建立在葡萄酒之上的。一个独立的windows python解释器 在后台启动用于执行调用的dll例程。 unix端和windows/wine端之间的通信基于python的 内置多处理连接功能。 zugbruecke(有限)支持指针、结构类型和回调函数。 zugbruecke提供了大量的日志功能,允许调试问题 与自身和葡萄酒有关。 zugbruecke使用python 3语法编写,主要针对 cpythonpython的实现。

关于葡萄酒(来自winehq.org):wine(最初是一个缩写 因为“葡萄酒不是仿真器”)是一个兼容层 能够在几个与POSIX兼容的操作系统上运行Windows应用程序, 例如Linux、MacOS和BSD。而不是像 虚拟机或模拟器,wine将windows api调用转换为posix调用 在运行中,消除了其他方法的性能和内存损失, 允许您将windows应用程序干净地集成到桌面中。

此项目与葡萄酒项目没有任何关联或关联。

先决条件

for usage
  • CPython 3.x (tested with 3.{4,5,6,7}) - no additional Python packages required
  • Wine 2.x/3.x/4.x (tested with regular & staging) - expected to be in the user’s PATH
for tests
for documentation

安装

branchstatusinstallationdocumentation
master (release)Build Status: master / release^{tt1}$Documentation Status: master / release
developBuild Status: development branch^{tt2}$Documentation Status: development branch

示例

在您喜爱的unix(-like)操作系统上启动交互式python会话,并尝试以下操作:

importzugbrueckeasctypesdll_pow=ctypes.cdll.msvcrt.powdll_pow.argtypes=(ctypes.c_double,ctypes.c_double)dll_pow.restype=ctypes.c_doubleprint('You should expect "1024.0" to show up here: "%.1f".'%dll_pow(2.0,10.0))

您刚刚在unix上看到了msvcrt.dll,微软的c标准库(或者wine的实现)。

对更多感兴趣吗?

很多代码,都是用ctypes'cdllwindll或^{tt8}编写的$ 记住,在windows下运行的,应该和zugbruecke运行得很好 在unix上(假设它不使用wine不支持的windows功能)。 对于更复杂的调用,memory synchronization可能是必需的。

速度

由于给定的复杂性小于1。}小于0.2。 在现代硬件上,每次呼叫的平均开销。它还没有为 速度。查看最新的benchmarks了解更多详细信息。

安全性

zugbruecke是出了名的不安全。从来没有,从来没有,运行它 超级用户权限!在安全问题上不要使用它! 有关详细信息,请查看文档中有关security的部分。

需要帮助吗?

请随意在这个项目的GitHub issue tracker中发布问题。

错误和问题

确保您已经阅读了zugbruecke文档中关于bugs的章节。

其他

对于生产环境

除非您认为 真的知道你在做什么,除非你绝望了! 作为一个实验性质和阿尔法质量,它很容易失败 在许多不可预测的方面,其中一些可能不明显或可能 甚至没有任何(中间)可识别的症状! 你可能会在没有注意到的情况下得到错误的,荒谬的结果!

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

推荐PyPI第三方库


热门话题
java Sonarqube测试覆盖率过滤器(jacoco)   java演示文稿将被取消,因为自创建以来显示度量已更改   java为什么Omnifaces Websocket<o:socket>不能与Websphere 9一起使用?   我试图读取java中的xml,但在我的系统中出现了一个错误   java异步支持未启用,即使默认情况下应该启用   java getThreadHandler方法无法从HandlerThread实例访问   带成员函数的多线程Java启动线程   java jar非法参数   java以编程方式注册@Component注释类   正则表达式如何在java中查找字符串中的长双精度数   具有多客户端的java ServerSocket   java JNI不适用于AppKit线程   java如何在用户选择目录元哈希值时输出该值?   java在春季上传阿拉伯文文件时,文件名以XML实体而不是阿拉伯文符号结束   java为什么我们需要在eclipse中作为远程服务器进行调试?   面向java的数据库计算PageRank   java在单击时切换到不同的活动