标签: pyd

Python C扩展:使用扩展名PYD或DLL?

我有一个用C编写的Python扩展,我想知道我是否应该在Windows下使用文件扩展名DLL或PYD.(我会在Linux中使用什么?)

有没有差异(除了文件名)?

我发现了一篇非官方的文章.这是pyc的秘密吗?为什么我找不到关于这个主题的官方文章?

python pyd python-c-extension

25
推荐指数
3
解决办法
2万
查看次数

逆向工程.pyd文件有多难?

阅读后如何保护Python代码?,我决定在Windows上尝试一个非常简单的扩展模块.我之前在Linux上编译了自己的扩展模块,但这是我第一次在Windows上编译它.我期待得到一个.dll文件,但相反,我得到了一个.pyd文件.Docs说他们有点相同,但它必须有一个init[insert-module-name]()功能.

假设它是安全的,像dll文件一样难以对它们进行反向工程.如果没有,那么从.pyc文件到.dll文件的规模进行逆向工程的硬度是多少?

python reverse-engineering pyd pyc

16
推荐指数
1
解决办法
3万
查看次数

是否可以反编译.dll/.pyd文件以提取Python源代码?

有没有办法反编译一个DLL和/或.pyd文件,以提取用Python编写的源代码?

提前致谢

python dll decompiling pyd extraction

11
推荐指数
1
解决办法
2万
查看次数

在py2exe构建中包含PYD/DLL

我的应用程序的一个模块使用.pyd文件中的函数.有一个选项可以排除dlls(exclude_dlls),但有一个包含它们吗?尽管复制了其余的文件(.py),构建过程似乎并没有复制模块中的.pyd.我还需要包含一个.dll.如何让py2exe包含.pyd和.dll文件?

python dll installation py2exe pyd

10
推荐指数
2
解决办法
1万
查看次数

在 Python 包中包含 *.pyd 文件

我有一个 python 模块module.pyd,一旦它被手动放到 python 安装文件夹的站点包上,它就可以正常工作。

当我将我的解决方案上传到云环境时,问题就开始了,buildpack 要求我将每个模块作为一个包传递给pip install module. 我用一个简单的__init__.py文件创建了一个文件夹,该文件只导入module.pyd 的所有内容,以便我的模块被视为一个文件夹。

然后我在这里阅读了http://peterdowns.com/posts/first-time-with-pypi.html如何上传我自己的模块并且我成功了,但是当我安装我的模块时,module.pyd文件没有被复制。我也尝试通过存储库直接安装它,pip install git+repository但发生了同样的事情。

我在这里阅读了https://docs.python.org/2/distutils/sourcedist.html#specifying-the-files-to-distribute我可能不得不明确地说我想在清单中复制*.pyd文件。在文件中,我已经完成了,但似乎还没有工作。

我目前使用 python 2.7.10

我是 python 新手,所以我很感激你们的帮助

python include pyd pypi python-2.7

9
推荐指数
1
解决办法
1万
查看次数

如何将 .pyd 文件作为 python 模块导入?

我正在使用 PyCharm。我在以下位置有一个 python 脚本:

C:\Users\XYZ\PycharmProjects\Project1\playground.py
Run Code Online (Sandbox Code Playgroud)

playground.py 只有一行代码,如下所示:

import PyTbl
Run Code Online (Sandbox Code Playgroud)

Project1文件夹中有另一个文件:

C:\Users\XYZ\PycharmProjects\Project1\PyTbl.pyd
Run Code Online (Sandbox Code Playgroud)

当我运行 Python 脚本时playground.py,出现以下错误:

ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
  File "C:/Users/XYZ/PycharmProjects/Project1/playground.py", line 1, in <module>
    import PyTbl
SystemError: initialization of PyTbl raised unreported exception
Run Code Online (Sandbox Code Playgroud)

如果我将鼠标悬停playground.py在 PyCharm 编辑器中的 Python 代码行上,我会收到以下错误消息:

"No module named PyTbl"
Run Code Online (Sandbox Code Playgroud)

知道我应该如何将.pyd文件导入 Python 脚本吗?

python windows pyd pycharm

6
推荐指数
1
解决办法
3万
查看次数

*.pyd 文件无法加载,但 DependancyWalker 恢复正常,并且 ProcMon 显示它已加载

我正在尝试使用 Python 加载 *.pyd,但收到众所周知的“导入错误:DLL 加载失败:找不到指定的过程”。错误。

我已经完成了以下操作:

1.) 使用 Dependency Walker 研究 *.pyd。GPSVC.DLL 和 IESHIMS.DLL 出现丢失,但延迟加载,IEFRAME.DLL 也出现丢失导出,但也是延迟加载。据我了解,这些没有被使用,并且无论如何都是延迟加载,所以它们不应该是问题。

2.) 在 python 命令窗口中对 foo.pyd 执行“import foo”,并用 ProcMon 进行监视。ProcMon 在“foo.pyd”上显示事件“LoadImage”,结果成功。

这似乎意味着 *.pyd 文件已正确加载。

那么我错过了什么。我的 Windows 诊断告诉我一切都很好,但 python 告诉我无法加载该东西(通常是由于缺少 dll 或符号)。

有想法吗?

谢谢!

python dll pyd procmon

5
推荐指数
1
解决办法
1万
查看次数

从交互式shell调用d代码

我需要一个交互式环境,我可以使用一个很好的脚本语言和一些体面的科学绘图库(例如python)来动态调用d函数.

有没有办法从shell调用d函数(Ipython或类似的)?我看着pyd,但似乎已经过时了.

python shell d pyd

5
推荐指数
1
解决办法
475
查看次数

反编译包含冻结的python对象的.pyd

我正在尝试找出反编译python .pyd文件的最佳方法。我到处看起来都死胡同。除了Aaron Portnoy和Ali Rizvi-Santiago在2008年展示的“ Antifreeze”外,似乎没有任何程序可以做到这一点。但是,该项目早已丢失并被放弃。

我昨天在推特(Aaron Portnoy)上与该程序的一位开发人员进行了交谈。是对话。

所以我的问题是,如何轻松地反编译包含冻结的python对象的.pyd。

要么

如Aaron所指出的,我将如何使用.pyo和.pyc修改其中的一个反编译器来反编译.pyd?如果这是我最终要做的事情,那么哪一个最好呢?

要么

如果您有防冻剂或知道从何处获得防冻剂,那将是一个奇迹。甚至开发人员也不知道从哪里获得。我已经搜索了好几天没有运气了。

python pyd

5
推荐指数
1
解决办法
2662
查看次数

使用Python setuptools将Cython编译的pyd文件放在原始文件夹中?

我正在尝试为包含Cython模块的Python 3.4应用程序构建setup.py包.我的计划是有一个setup.py文件需要Cython并编译.pyx文件的想法通常我会在Win32(x86和x64)和Mac上运行它然后生成平台轮并将它们上传到PyPI,所以普通用户不需要Cython或编译任何东西.

目前我可以获取setup.py脚本来构建.pyd文件,但是它不会将构建的.pyd文件放在与原始.pyx文件相同的位置,这是我需要它的地方.

我尝试手动复制.pyd文件,但是当我通过bdist_wheel生成轮子时,我得到一个纯Python轮,我认为是错误的,因为根据平台,我的内置.pyx文件有不同版本.我还尝试了对Distribution类进行子类化并强制is_pure()返回False(如此处在Building Wheels部分中所述),但这不起作用.(仍然生成纯Python轮.)

我假设如果我可以获得setup.py脚本将编译后的文件放在正确的位置,那么轮子将不是纯Python,一切都会好的.

所以我的问题是:

  1. 在setup.py中是否有某种设置告诉它将已编译的Cython文件放入与源文件相同的位置?
  2. 或者有没有办法将编译后的文件复制到我需要它们的位置,但是仍然可以将轮子构建为非纯粹的?
  3. 或者我是以错误的方式解决这个问题.我应该更改我的Python代码以从其他地方提取已编译的包吗?(这对我来说似乎不对.)
  4. [编辑]或者我应该将已编译的二进制文件.pyd/.so/.dylib放入包中,添加逻辑以在运行时基于体系结构获得正确的.pyd,然后使用纯Python轮?(这对我来说也不合适.)

有关我的设置的更多信息:我在setup.py脚本中使用setuptools(而不是distutils).我的setup.py的片段在这里(删除了很​​多东西以保持相关的东西):

from setuptools import setup, Extension
from Cython.Build import cythonize
from Cython.Distutils import build_ext

...

extensions = [
    Extension(name='audio_interface',
              sources=['mpf/mc/core/audio/audio_interface.pyx'],
              include_dirs=include_dirs,
              library_dirs=library_dirs,
              libraries=libraries,
              extra_objects=extra_objects,
              extra_compile_args=extra_compile_args,
              extra_link_args=extra_link_args),

...

setup(
      ...
      ext_modules=cythonize(extensions),
      cmdclass= {'build_ext': build_ext},
      ...
Run Code Online (Sandbox Code Playgroud)

谢谢!布赖恩

python setuptools pyd cython

5
推荐指数
1
解决办法
1506
查看次数