问题标签 [pyd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
60 浏览

winapi - 尝试使用 LoadLibraryEx 加载 pyd 并失败

我有一个 pyd pytest.pyd,其中声明了两个函数:say_hello 和 add_numbers。所以我想用 LoadLibraryEx 在 C++ 中动态加载这个 pyd。但是,当我尝试调用 initpytest func 时,它失败了。

在输出错误中:致命的 Python 错误:PyThreadState_Get:在 Test.exe 中的 0x00007FFCD0CC286E (ucrtbase.dll) 处没有当前线程未处理的异常:请求致命的程序退出。

这里是生成到 pyd 之前的扩展代码:

0 投票
1 回答
58 浏览

python - 无法加载使用 MSYS2 MinGW 32 位生成的 pyd 模块

我有两个简单的文件:main.py 和 config_cowsay.py

主文件

config_cowsay.py

如果我运行 main.py,程序会正确执行。现在我需要将 config_cowsay 转换为 pyd 文件,并且仍然可以从 main.py 调用它。我使用 MSYS MinGW 32 位和 makefile 来完成它(链接 makefile 不会为问题解决增加任何东西,但如果需要我可以这样做)。从 MSYS MinGW 32 位终端执行我的 Makefile 会生成一个文件夹,其中包含以前的 main.py 和旁边的 config_cowsay.pyd。它还生成一个 main.exe 作为另一个文件夹中的一个可执行文件。

所以现在,如果我从 powershell 终端运行 exe,程序运行完美。如果我使用MSYS MinGW 32 位终端运行 config_cowsay.pyd 旁边的 main.py 文件,则 main.py 脚本可以使用 pyd 模块完美执行,而无需更改 main.py 代码中的任何内容。但是,如果我尝试使用 python main.py 在我的 powershell 终端上运行 main.py ,我会收到一条错误消息,告诉我模块 config_cowsay 不存在。

未找到模块

我已经尝试了我能找到的关于这个主题的一切。将 pyd 文件添加到 sys.path 变量,编辑 PYTHONPATH 环境变量,将 pyd dll 移动到 site-package 或 DLLs python 文件夹,将 config_cowsay.pyd 重命名为 config_cowsay_p.pyd 等...

我确保 MSYS 的环境与我的计算机相同,相同的 python 版本 3.8.9 32 位安装了相同的模块等......所以它不应该是 python 版本问题。最重要的是,从我的 powershell 终端运行输出 main.exe 可以工作,这意味着我的计算机环境应该与我用来生成 pyd dll 的 MSYS 兼容。

如果您需要更多详细信息,请告诉我。谢谢你的帮助!

0 投票
0 回答
16 浏览

python-3.x - 无法加载 libmgrs.cp39-win_amd64.pyd

我写了一个脚本:

并使用以下命令将其转换为单个 exe 文件

这导致没有错误。但是,当我在 cmd 中运行脚本时,它说它无法加载“libmgrs.cp39-win_amd64.pyd”。 在此处输入图像描述

如何加载/导入丢失的文件?

0 投票
0 回答
138 浏览

python - 将 pyd 导入 Python (ModuleNotFoundError)

我有这个 C++ 库,我用 pybind11 编写了绑定,然后我用 cmake 构建了它。

在 Linux 上,我得到一个 .so 文件,我可以毫无问题地导入它:

当我在同一个文件夹中打开 python 时,我可以毫无问题地导入它import mylib

在 Windows 上,我通过 MSYS 64 位和 MinGW-w64-x86_64-cmake 构建它

cmake -A x64 ..(而在build项目根目录为上方文件夹的文件夹中 -> ..

然后构建我运行cmake --build . --config Release(Visual Studio 15 2017 构建文件)

这会生成一个“Release”文件夹,其中包含 3 个文件。

当我打开 python(通过 MSYS 和通过 powershell)时,我无法导入mylib

我也尝试重命名mylib.cp39-win_amd64.pydmylib.pyd,这无济于事,但确实改变了错误

我已经查看了有关堆栈溢出的其他类似问题,但他们都没有任何可以帮助我的东西。

0 投票
0 回答
17 浏览

python - Python模块'scm'没有属性'Open'

我有一个名为“scm.pyd”的第三方 pyd 文件。我已将此文件和 DLL 文件添加到 PYTHONPATH 中。

import scm -> works
scm.Open() -> prints "module 'scm' has no attribute 'Open'"错误
我确定有一个名为 Open() 的函数。当我将 scm 的 DLL 版本与ctypes一起使用时,Open() 函数起作用。
我想使用 pyd 文件,因为函数原型已经可以使用并且它们具有 python 语法。
如何解决这个问题?

0 投票
0 回答
104 浏览

python - 如何运行加密的 .pyd 或 .so python 文件

我使用easycython编译了一个python脚本文件。使用以下语法。easycython encrypt.py

上面的脚本创建了 .pyd 文件“encryption.cp38-win_amd64.pyd”但是当尝试使用以下语法使用 python 执行文件时

我得到以下错误。

如果我尝试运行它按预期执行的 .py 文件。任何人都可以帮助如何在 Windows 环境中运行 .pyd 或在 linux 环境中运行 .so 。

0 投票
0 回答
25 浏览

python - pyd文件的路径转换为cython

“pyd”的路径是否应该与要使用的“py”文件在同一个文件夹中?还是应该在 Python 包所在的文件夹中?例如)C:\ProgramData\Anaconda3\envs\pcap\Lib\site-packages

0 投票
0 回答
204 浏览

python-3.x - Nuitka:将 PYD 集成到 .py 和 .exe 中

我有一个使用 PySimpleGUI、Matplotlib 和其他一些应用程序(我将它们统称为“模块”)。

( 1 ) 我想为我的可执行文件 (app.exe) 使用比以往更好的保护(VMProtect 和其他一些在列表中)。为此,我使用 Nuitka 将我的 app.py 代码转换为 C++ 并使用 mingw64 将其编译为可执行文件:

python -m nuitka --standalone --nofollow-imports --plugin-enable=tk-inter --plugin-enable=numpy --plugin-enable=pylint-warnings --mingw64 --output-dir=X: app.py

( 2 ) 另外,我想将 Modules (= Modules.py ) 转换为 *.pyd 文件 (= Modules.pyd )。我还使用 Nuitka 将 Modules.py 转换为 Modules.pyd。例如:

python -m nuitka --module "c:\Program Files\Python\Lib\site-packages\PySimpleGUI\PySimpleGUI.py"

( 3 ) app.exe 指的是一起分发的Modules.pyd。

我的问题是,当我尝试在 app.py 代码中引用 Modules.pyd 时,即:

import PySimpleGUI.pyd as sg # PySimpleGUI.pyd is located in the same folder as app.py

我收到以下错误:

ModuleNotFoundError: No module named 'PySimpleGUI.pyd'; 'PySimpleGUI' is not a package

我无法找到解决此问题的方法。

实际上,我想实现以下目标之一:

(i) 导致 app.py(也意味着 app.exe)识别 Modules.pyd(我已经有了后者)

(ii) 通过任何其他转换/编译过程找到其他方式来接收 app.exe(注意:准备好保护)和 Modules.pyd。

我不想拥有的是 app.exe 和同一个目录中的几十个 Modules.py。

任何关于如何实现 (i) 或 (ii) 的建议将不胜感激。

PS:所有软件和模块都是最新的,所有路径都设置好了。

更新(2021-09-20):

经过进一步研究后,我能够找到似乎是 [部分] 解决方案的解决方案——在 app.py 中添加以下行,教 app.exe(在通过 Nuitka 转换后)以识别 Modules.pyd:

但是:现在我无法将 dateutil.relativedelta 转换为正确的 *.pyd 因为不存在这样的文件。

这变成了如何配置 Nuitka 以从 module.class 创建 *.pyd 文件的问题。

如果有人对此有任何解决方案,请回复。

0 投票
0 回答
22 浏览

python - 我们可以在 Python 多进程中运行 C 编译对象吗?

我在 Python 多处理中遇到错误cannot pickle "bitstruct.c.CompiledFormatDict" object

当我*.pyd从 Python 库文件夹中删除时,它可以工作,但运行速度不如对象。

更新:我也尝试过 Pathos,但遇到了同样的错误。

0 投票
0 回答
53 浏览

python - .pyd 文件是如何由 C++ 项目制作的?

我目前的目标是让这个 repo CV-camera-finder与 Python 3.10 兼容。在 README 文件中,原始发布者说

使用媒体基础查找已连接摄像机列表的简单功能。这只是在https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/multimedia/mediafoundation/MFCaptureToFile中找到的示例的修改代码,以便在 python 中使用。

将 pymf.pyd(32-bit -> file in folder 32, 64-bit -> ...) 下载到您的 PYTHONPATH 以使用它。如果要修改它,请编辑 cpp 文件并重建它。

我对 Python 的了解最多是中级和 C++ 初学者。我下载了 Visual Studio 2022 并尝试自己重建它,但没有成功。我使用了他的 cap.cpp 和 pymf.cpp 文件,以及来自引用的 Media Foundation 示例的 capture.h 文件,因为我的印象是基于我不需要其他任何东西的包含。我将我的 Python.h 包含指向位于 3.10 包含文件夹中的那个,假设这可以解决问题。

我遇到了多个问题。第一个是

我添加了一个指向 3.10 libs 文件夹的附加库依赖项。这样做之后,这是我现在遇到的错误。

我显然对此感到头疼,但我真的很想让它适用于 Python 3.10。任何人都可以提供有关将其构建并制成.pyd的步骤/建议/教程/等吗?