问题标签 [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 投票
0 回答
389 浏览

python - Libtorrent 已下载并且模块文件存在,pip 说它存在,但我无法在 Python 中导入它

我正在尝试将 libtorrent 添加到我的 Python 中。我的问题是,即使我尝试了许多虽然奇怪的解决方法(稍后会详细介绍)来让 libtorrent 与我的 Python 一起工作,但我终生无法导入模块。

我将介绍我尝试过的内容。我偶然发现了部分帮助我的“解决方案”,但不是一直帮助我。我什至尝试按照自己在Stack Overflow上提供的创建者的说明进行操作。

让我们退后几步,观察我尝试过的操作。我们将从提升开始。如果您不知道,libtorrent 需要 boost 才能运行。当涉及到提升时,我的知识并不丰富,因此我将不再解释。所以,就像我遵循的所有说明一样,说需要提升。我及时安装了 boost 并将其路径添加到环境表中。我随后运行了 boost 中提供的 bat 文件,它创建了两个文件(可能更多B2.exeBJAMB2是我在接下来的步骤中需要使用的。

我继续进入下载的 boost 文件夹 (ver 1.66) > tools > build > example,然后编辑 user-config.jam 文件并添加以下项目:

使用 msvc:14.0;
使用 gcc : : -std=c++11 ;
使用 python:3.6:C:\Users\XXXX\AppData\Local\Programs\Python\Python36-32:C:\Users\XXXX\AppData\Local\Programs\Python\Python36-32\include:C:\Users\ XXXX\AppData\Local\Programs\Python\Python36-32\libs ;

然后,我继续为 VS2017 打开提升的x64 本机工具命令提示符并执行以下命令

b2.exe --hash openssl-version=pre1.1 link=shared libtorrent-link=shared stage_module stage_dependencies

也是由 Arvid 提供的(我相信是创建者),在libtorrent>bindings>python文件夹中这开始了 5 分钟的下载时间。它给了我以下信息:

最后说它

说明基本上到此为止,因此您会认为它现在已正确配置。不是。我立即去了 bindings>python 文件夹,果然,存在 libtorrent.pyd 和 libtorrent.lib 文件。看起来很有希望。我启动了一个命令提示符,检查了 Pip(pip 列表)并在列表中看到了 libtorrent。进入python并尝试导入libtorrent。

pyd文件存在,所以我尝试手动将它拖到python DLL文件夹中,仍然无法导入它。我什至还做了一本手册

有些人建议这样做,因为它可能没有联系。

我很茫然。

我无法导入它,但它显然不仅存在于 pip 列表中,而且存在于libtorrent > bindings > python 文件夹(pyd 和 lib 文件)中。

我也尝试过运行 setup.py 文件。哪个做同样的事情,但没有让我更进一步。

我做了一个观察:libtorrent > bindings > python > bin文件夹中的文件夹有一个奇怪的名称:“d796976f6d11336977dac24301151009”包含一个 src 文件夹、libtorrent.exp、libtorrent.lib、libtorrent.pdb、libtorrent.pyd、libtorrent.pyd .manifest 和 libtorrent.pyd.rsp

在我看来,安装或下载尚未完全完成。然而,这可能不是这个,这只是一个没有受过教育的猜测。此外,在libtorrent > bindings > python文件夹 & 中找到的 libtorrent.lib 文件和 libtorrent.pyd 文件的大小分别为 2 KB 和 3000 KB

会不会坏了?我没有正确链接它吗?

我正在使用 Python 3.6.5 32 位(也存在 64 位,但由于某种原因根本无法与 libtorrent 一起使用)。安装了 Windows 10 的基于 Windows 的 64 位系统。提升 1.66.0。尝试下载/安装/导入 libtorrent-rasterbar-1.1.7

0 投票
3 回答
33060 浏览

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

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

playground.py只有一行代码如下图:

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

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

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

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

0 投票
1 回答
9070 浏览

python-3.x - 将 .py 文件转换为 .pyd 文件

经过大量搜索无法找到合适的解决方案,我有我的 python 文件'Main.py'。我想要它的 .pyd 文件,即 Main.pyd。我已经尝试过使用 Cpython 的方式,即首先我将“Main.py”文件转换为“Main.c”,但随后无法将“Main.c”转换为“Main.pyd”,这是一种相当艰难的方式。我可以有一种简单的方法将“Main.py”转换为“Main.pyd”吗?

0 投票
1 回答
190 浏览

cython - 使用 LoadLibrary 在 .pyd 中加载 cython cdef 函数

我正在尝试在 C++ 中动态加载 cythonized .pyd。在 linux 机器中创建一个 .so 文件。

使用 .so 我可以执行以下操作:

效果很好!


但是,在 Windows 中,我想要执行以下操作:

这是我的问题!.pyd 中不存在 foo_func,即使它位于 .so 中

两者都是使用相同的 setup.py 制作的:

还有一个例子 foo.pyx

所以接下来我使用 .pyd 查看了dumpbin /exports foo.pyd. 唯一的函数是 PyInit_foo。所以看起来 .pyd 与 .so 不同。objdump -T foo.so在linux中使用时,所有功能都在那里!

我需要为 Windows 以不同的方式对文件进行 cythonize 处理吗?这里还有什么不同?

0 投票
1 回答
289 浏览

python - *.pyd 库中的 C++ Boost Python 方法不起作用

美好的一天,我对 boost::python 中的简单示例有一些问题 - 所有必须返回任何类型的方法,除了char const*或创建类不会返回任何东西,我看到它的所有内容RESTART: Shell

我在用着:

  • CLion 2018.3.3,Build #CL-183.5153.40,于 2019 年 1 月 10 日构建;
  • MinGW-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0;
  • CMake 3.13.0-rc1-;
  • Python 3.7 (x86_64);
  • 提升 1.68.0,

它是用下一个参数构建的:

CMakeList.txt 包含:

wrap.cpp 其中包含所有方法及其在 python 模块中的定义:

IDLE 3.7(64 位)中的 Python 脚本:

Python 3.7.0 Shell 中的输出:

当我尝试在 PyCharm 中使用相同的脚本时,我得到了错误代码消息:

有谁知道我的出库有什么问题以及使其工作的更好方法是什么?

0 投票
0 回答
398 浏览

python-3.x - 最小化 --onedir 选项的 pyinstaller 文件

我一直在使用 pyinstaller 将我的代码“传播”到没有安装 python 3.x 的机器中,所有这些机器都在同一个网络中。这是一个很棒的软件,但即使在阅读了非常广泛的文档之后,我仍在努力为此目的简化 .exe 的创建。

理想情况下,我只想将 .exe 文件转发给用户(来自 --onedir 选项,而不是 --onefile ,因为它会很大)。我设法创建了一个运行时挂钩来搜索网络中的 dll:

除了:VCRUNTIME140.dll、python37.dll 和 pywintypes37.dll。这非常方便,并且已经节省了大量空间。尽管如此,我还没有设法为 .pyd 文件或文件夹做同样的事情。我尝试在运行时将 PATH 设置为指向外部网络文件夹,但这也不起作用:

我考虑的另一个选择是将所有 .pyd 文件放入一个 zip 文件夹(如 base_library.zip)并为其创建一个 PATH。也没有用。

我确定我只是错过了一些简单(或复杂?)的东西。也许浏览 pyinstaller 源代码以更改那里的文件夹,但我尝试通过一些关键字搜索它无济于事。

我想强调一下,我不是试图将文件组织到“dist”文件夹中更好的文件夹中,而是在网络中搜索文件(它可能是机器中其他地方以前预装的文件夹,所有不同的地方我在 python 中创建的程序可以共享)。

有没有人有这方面的经验,可以指出我正确的方向?

0 投票
0 回答
281 浏览

python - 如何保护 Cython .pyd?

我有以下包含 cdef 类的foo.pyx文件:

以及相应的foo.pxd

我想保护我生成的 pyd 只导出test_1函数。因为(如果我错了,请纠正我)这两个函数都可以通过 cimport 导入到其他 pyx 文件中。为此,它们必须在 pyd 中“导出”,这意味着它们可以从 pyd 外部获得。

我尝试从声明中删除test_2(在 foo.pxd 中),但出现编译错误。

我的问题:

  • 有没有办法控制从 pyd 导出的内容?
  • 如果不是,我可以做些什么来保护或混淆导出的函数名称?

我担心看到 pyd 的导出函数签名的人会猜到他们在做什么。

0 投票
0 回答
251 浏览

python - 在我的 python 中导入任何 .*pyd 失败并引发导入错误:找不到指定的

我正在 pyprosail 上开发一个 python 项目,它基于 14 个参数给出作物冠层反射率。代码已经写在这里了

我要做的是下载 pyprosail 并将其作为模块导入我的项目中。但我面临这个错误:

ImportError:DLL 加载失败:找不到指定的模块。

我尝试过: 1. 切换到 python 32 位版本,因为编译的 dll 是 32 位的。2.下载较低版本的python,因为我知道这只支持python 2.7。3. 检查 pyd 对依赖 walker 的依赖,这会导致 1000 多个 dll 丢失。4. 尝试修改 import 语句,因为它抛出了 ValueError。5. 修改系统路径变量。

这是错误:

Traceback(最近一次调用最后一次):文件“C:\Python27\Lib\site-packages\pyprosail\PyProSAIL.py”,第 18 行,在 import _prosail_model ImportError: DLL load failed: The specified module could not be found。

这是 PyProSAIL.py 中的一段代码:

0 投票
0 回答
139 浏览

python - 在 C++ 中嵌入 Python

我正在尝试使用 Python 嵌入 C++ 应用程序。我从 python.org 下载了用于嵌入、安装 pip 和安装 numpy 的最小 zip 文件。但是当用它执行一个简单的测试时PyRun_SimpleString("import numpy");会返回一个错误ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'

我尝试使用 pip 安装其他库并尝试导入它们,它们都可以工作,除了 numpy。我有我的 python36、Lib 和 DLLs 文件夹的路径。在使用 ProcessMonitor 进行调试后,我看到 numpy/core 文件夹中的 _multiarray_umath.cp36-win_amd64.pyd 在我使用 C++ 应用程序运行时从未使用过。如果我使用普通命令行 python.exe import numpy 方法和相同的 python 文件夹,它可以工作,并且使用 _multiarray_umath.cp36-win_amd64.pyd。

我尝试添加站点包路径甚至完整的 numpy 路径,但它仍然没有像命令行 python.exe 那样使用 .pyd 文件。我尝试libopenblas.PYQHXLVVQ7VESDPUVUADXEVJOBGHJPAY.gfortran-win_amd64.dll按照其他帖子的建议将和 python36.dll 添加到 numpy/core 文件夹,但没有任何影响。

还有什么问题?非常感谢您提前。

0 投票
0 回答
241 浏览

python - boost python字符串集与C++签名错误不匹配

我正在调用我在 c++ 中使用 boost-python 创建的 pyd (.dll),如下所示:

但它抱怨签名只是一组而不是一组字符串。非常感谢我对此能做的任何建议。