嵌入python。与ProgramFullPath的版本不一致
我的路径上首先有Anaconda Python,但是一个简单的Python嵌入示例显示了我的Mac System Python版本,即使ProgramFullPath正确地指向了Anaconda Python.有没有办法正确找到/使用Anaconda Python? 最小示例: #include #include int main(void) { Py_Initialize(); printf("Python version:\n%s\n", Py_GetVersion()); printf("Python Program Full Path:\n%s\n", Py_GetProgramFullPath()); Py_Finalize(); return 0; } 我编译了, gcc `python-config --cflags` example.c `python-config
0 2024-01-26
编程技术问答社区
pythonnet在.net中嵌入Python的例子,无法加载模块
我正在尝试从 https://github.com/pythonnet中运行.net示例中的嵌入python/pythonnet .我遵循故障排除文章,将适当%的pythonpath%和%pythonhome%设置为程序基础目录中的Anaconda环境. 激活了我的Anaconda环境后,我成功地导入了系统,并且可以成功地使用PythonEngine.runsimplestring(),但是Numpy示例以 python.runtime.pythonexception失败:Importerror:Importerror:无模块名为" numpy" 在这种环境中,从python导入numpy是成功的,但是此和其他软件包未能在pythonnet中导入. pythonnet版本:2.3 x64(使用 conda install -c pythonnet pythonnet 安装)) python版本:python 3.5 x64(anaconda) 操作系统:Wi
4 2024-01-26
编程技术问答社区
_ctypes.cpython-39-x86_64-linux-gnu.so:未定义的符号: 使用 dlopen 加载的嵌入式 Python 中的 PyFloat_Type
我在Ubuntu 20.04中使用嵌入式Python(3.9),并尝试导入产生错误_ctypes.cpython-39-x86_64-linux-gnu.so: undefined symbol: PyFloat_Type的CTYPE. 我正在编译共享对象,该对象是使用dlopen() 动态加载的 CMake用于构建共享对象.我说的是Python3依赖性这样的依赖性: find_package(Python3 REQUIRED COMPONENTS Development Development.Embed)和使用target_link_libraries(${target_name} Boost::filesystem Python3::Python) 链接 如果我正确理解,这告诉cmake与libpython3.9.so直接链接(我还试图明确链接到libpython3.9.so,但这并不能解决问题). 我确实看到libpython3.9.so导出PyFloat_Type
4 2023-11-02
编程技术问答社区
在PyTorch中,embedding_bag究竟是如何工作的?
在Pytorch中,Torch.nn.Functional.embedding_bag似乎是负责从事嵌入查找的真正工作的主要功能.在Pytorch的文档上,已经提到embedding_bag完成其作业>而无需实例化中间嵌入.那是什么意思?例如,这是否意味着当模式为"总和"时,它会在就场求和吗?或者,这只是意味着在调用embedding_bag时不会产生其他张量,但从系统的角度来看,所有中间行矢量已经被输入到处理器中以计算最终张量? 解决方案 在最简单的情况下,torch.nn.functional.embedding_bag在概念上是两个步骤的过程.第一步是创建一个嵌入,第二步是减少(根据"模式"参数)减少跨维度0的嵌入输出.因此,您可以获得与embedding_bag通过调用torch.nn.functional.embedding,然后是torch.sum/mean/max.在下面的示例中,embedding_bag_res和embedding_mean_res相等.
4 2023-10-24
编程技术问答社区
将matplotlib动画嵌入到tkinter框架中
对于一个项目,我正在研究一个简单的谐波运动模拟器(随着时间的推移,质量如何振荡).我已经正确地生成了数据,并且已经在TKInter框架工作中产生了图.目前,它仅显示一个静态图,我的目标是随着时间的推移将图表显示为动画. 因此,为了轻松的清酒,我使用以下代码对程序进行了模拟: #---------Imports from numpy import arange, sin, pi from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure import Figure import tkinter as Tk from tkinter import ttk import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation #---------End of
4 2023-10-23
编程技术问答社区
使用Boost::Python::Object导致链接器错误
所以,我正在尝试将Python嵌入C ++中.我已经走了很远,并且能够做诸如python的奔跑之类的基本事情.一旦我尝试使用boost :: python ::对象,我就开始遇到这4个链接器错误. 我使用bjam bubost 1.54.0和python 2.7.5. 建立了增强 python lib构建命令: bootstrap .\b2 toolset=msvc-10.0 --with-python 最小代码示例: #include #include int main(int, char **) { Py_Initialize(); PyRun_SimpleString("import Entity"); boost::python::object main_module = boost::python::import("__main__"); boost::p
34 2023-08-22
编程技术问答社区
为我的应用程序构建最小的Python'脚本需求?
您在为我的应用程序的脚本需求中构建Python(2.x)的非常简约版本的建议. 我的主要动机是使脚部打印(内存和磁盘明智)尽可能低,以使我的本机应用程序不会受到任何重大性能的损失.由于可能增加了我的应用程序的启动时间,即使是python dll的大小. 我们可以像 lua 或其他轻量级解决方案吗? 解决方案 您是否尝试过其他解决方案 您只能使用DLL
8 2023-08-22
编程技术问答社区
如何在C++代码中捕获Python stdout
我有一个程序,在运行期间,有时需要致电Python才能完成某些任务.我需要一个调用Python和捕获Pythons stdout 并将其放入某些文件中的功能. 这是函数的声明 pythonCallBackFunc(const char* pythonInput) 我的问题是捕获给定命令的所有python输出(pythoninput). 我没有Python API的经验,也不知道正确的技术是什么. 我尝试使用的第一件事是使用py_run_simplestring重定向Python的SDTOUT和STDERR 这是我编写的代码的一些示例. #include "boost\python.hpp" #include void pythonCallBackFunc(const char* inputStr){ PyRun_SimpleString(inputStr); } int main () { ... //S0m
2 2023-08-02
编程技术问答社区
Youtube-dl 仅提取播放列表信息
ydl = youtube_dl.YoutubeDL() with ydl: r = ydl.extract_info("myplaylist", download=False) # don't download, much faster print(r['uploader'],r['title'],r['thumbnail']) 像这样的代码输出 [youtube:playlist] Downloading playlist playlistidhere - add --no-playlist to just download video videoid [youtube:playlist] playlistidhere: Downloading webpage [download] Downloading playlist: playlistnamehere [youtube:playlist] playlist Spotlight On: June Recap
12 2023-07-21
编程技术问答社区
在Qt 5中嵌入Python
我想将python解释器嵌入到QT 5应用程序中. 我在QT 5中有一个工作应用程序,但是当我放置 时 #include 在顶部(QT标题下方)的汇编断裂 ../sample/python3.3m/object.h:432:23: error: expected member name or ';' after declaration specifiers PyType_Slot *slots; /* terminated by slot==0. */ ~~~~~~~~~~~ ^ 当我将Python标头放在QT标题上方时,它会用 折断 In file included from ../Qt5.0.1/5.0.1/clang_64/include/QtGui/QtGui:59: ../Qt5.0.1/5.0.1/clang_64/include/QtGui/qpagedpaintdevice.h:63:57: error: ex
16 2023-07-16
编程技术问答社区
当QThread试图通过PyGILState_Ensure()获取Python GIL时出现死锁。
我有一个C ++/QT应用程序,其中我想嵌入Python解释器.我想从Qthread打电话给Python,但是我在电话的线路上陷入僵局,以尝试获取全局解释器锁(GIL). 我将在下面提供一个最小而直接的示例,该示例遵循给出的建议在这里: //main.cpp: #include #include #include "Worker.h" void startThread() { QThread* thread = new QThread; Worker* worker = new Worker(); worker->moveToThread(thread); QObject::connect(thread, SIGNAL(started()), worker, SLOT(process())); QObject::connect(worker, SIGNAL(finished()
10 2023-07-16
编程技术问答社区
将matplotlib图表嵌入Qt/C++应用程序中
我正在QT/C ++中开发面向数学的GUI应用程序,并希望嵌入Python脚本,包括Numpy和Matplotlib.使用Python C API,我最终设法运行了一个脚本,从Python变量中检索值,包括Numpy数组等.但是我未能将Matplotlib图表绘制到我的QT/C ++应用程序中.> 最好说,我设法将图表的RGBA缓冲区保存到使用Python脚本的变量,然后将变量的值作为缓冲区类型的PyObject,获取缓冲区并将其转换为Qimage,然后将其转换为qpixmap最后将其放入Qlabel并显示. 但是我仍然缺少它的交互行为,调整大小等.尽管看来可以通过将QT鼠标事件转发到图.BANVAS.BUTTON_PRESS_EVENT来完成了解Python的原理足够好.我缺少明显的东西. 我发现了一些将matplotlib图表嵌入pyqt或pyside(即写在python)应用中的样本,在这些应用程序中,我看到了qmainwindow.setcentralwidget(
146 2023-07-16
编程技术问答社区
嵌入式Python。多个子解释器不工作
我试图了解子解释者和吉尔.但是我的实验经常失败(相同的代码很少有效). 从SO问题和几个站点中收集信息,我有以下代码催生2个非Python线程.这些线程中的每一个都给出了Python子互动.我想在这些线程中释放GIL并在C ++中调用DLL函数(尽管此示例没有详细介绍.在这里我只写信给Stdout).基本上,我想在执行中查看并发(非Python DLL调用). #include #include #include void worker(PyInterpreterState* interp, int n) { PyThreadState* ts; ts = PyThreadState_New(interp); PyThreadState_Swap(ts); PyThreadState* _save; _save = PyEval_SaveThread();
16 2023-07-15
编程技术问答社区
初始化时嵌入python的错误
当iM运行C代码调用Python函数时,PY_Initialize()错误是Importerror:no模块命名站点.我试图将py_setProgramname(argv [0])放置,但不起作用. cmd调用是cinterfacepython test.py乘3 2(exe是cinterfacepython) 解决方案 我不得不用路径env-var和pythonpath稍微磨碎一点,以使嵌入时的情况更好. py_setprogramname并不重要,主要用于内部参考等... 因此,我建议您找到本地安装Python的位置(在Windows机器上的注册表中可用),然后使用setenv将路径和PythonPath设置为适当的东西.那将是路径的python.exe目录(如上面的评论中),以及使用您自己的python代码和您从嵌入式EXE运行的相关库将pythonpath设置为dir. 然后运行py_initialize,看看是否发生了正确的事情.如果您需要在初始化后修
10 2023-07-15
编程技术问答社区
在c++的嵌入式python中导入tensorflow时出现错误
我的问题是关于将Python 3.5解释器嵌入C ++程序中以从C ++接收图像,并将其用作我训练的TensorFlow模型的输入.当我在Python代码中导入TensorFlow库时,会出现错误(其他库可以正常工作).简化的代码如下: #include #include #include int main() { Py_InitializeEx(1); PyObject* sysPath = PySys_GetObject((char*)"path"); PyObject* curDir = PyUnicode_FromString("."); PyList_Append(sysPath, curDir); Py_DECREF(curDir); PyRun_SimpleString("import tensorflow\n" "print(ten
14 2023-07-15
编程技术问答社区
在嵌入式Python解释器中打印一个变量
我写了一个嵌入python的小C程序.我正在使用py_initialize()和py_finalize()正确设置它,并且能够使用pyrun_simplestring或pyrun_simplefile运行脚本.但是,我不知道印刷变量时Python自己的解释器的行为如何模仿. 特别: a = (1, 2, 3) print a 对我来说很好:它打印出(1,2,3) 但是: a = (1, 2, 3) a 根本什么也没打印.在Python自己的口译员中,这也将打印出(1、2、3).如何使我的代码做用户期望并打印出值的代码? 预先感谢! 解决方案 要运行口译员交互式循环,您应该使用 PyRun_InteractiveLoop() .否则,您的代码将表现得好像是在Python脚本文件中写的,而不是交互式输入的. 编辑:这是简单交互式解释器的完整代码: #include int main() { Py_Ini
14 2023-07-15
编程技术问答社区
将python + numpy代码嵌入C++ dll回调中
我是Python嵌入的新手. 我正在尝试将python+ numpy代码嵌入C ++回调函数(在DLL中) 我面临的问题是以下内容.如果我有: Py_Initialize(); // some python glue // python invocation Py_Finalize(); 一切正常. ,但是如果我有: Py_Initialize(); _import_array(); //to initialize numpy C-API // some python glue + numpy array object creation // python invocation via PyObject_CallObject() Py_Finalize(); 这第二次崩溃了_import_array(); (这意味着它适用于第一个回调) 如果我仅执行一次python和numpy初始化,并且在删除仪中的最终化(因此不是每次初始化/最终化时),则在离开回
16 2023-07-15
编程技术问答社区
将Python嵌入到C语言导入的模块中
我在文档 - 每当我尝试使用导入的模块时,我都会得到: pythonincl.exe中的0x1E089E85 inthendered例外:0xc0000005: 访问违规阅读位置0x00000004. 错误发生在PyObject_GetAttrString()方法中,文档并没有多大帮助.我还尝试使用示例来自IBM,但始终得到相同的访问. 以下是我似乎无法工作的教程中的示例代码,这里有什么问题? C代码(在一个主文件中): #include int main() { PyObject *strret, *mymod, *strfunc, *strargs; char *cstrret; Py_Initialize(); mymod = PyImport_ImportModule("reverse"); strfunc = PyObject_GetAttrString(mymod, "rstring"
24 2023-07-15
编程技术问答社区
带有关键字参数的PyObject_CallMethod
我正在尝试将python(2.7)库嵌入我的C应用程序中,并且我正在使用Python/c API来调用C.从语义上讲,我正在尝试在Python中实现以下行的等效: myobject.dosomething('blahdy blah', somearg=True) 通过阅读文档如下所示,但这并不是关键字参数: PyObject_CallMethod(myobject, "dosomething", "s", "blahdy blah"); 我对python并不熟悉,这在这一点上有点困扰,因为文档并不完全清楚,而Google搜索也没有得到太多有用的信息.我感谢任何帮助. 解决方案 最后我使用 pyobject_call 对于提示!).以防万一有人想知道如何做到这一点,这是我的代码: PyObject *args = Py_BuildValue("(s)", "blahdy blah"); PyObject *keywords = PyDict_New
20 2023-07-15
编程技术问答社区
Python 3解释器在嵌入时是否会泄漏内存?
此错误报告指出,截至2007年6月,Python解释器将不会清理所有分配的所有分配在使用嵌入式Python解释器中调用py_finalize后,内存py_finalize.建议在申请终止时一次致电Py_finalize. 此错误报告指出,截至2011年3月3日和2011年3月,该口译员仍然泄露内存. 有人知道这个问题的当前状态吗?我很关心,因为我有一个应用程序,在该应用程序中,每个运行实例都将解释器称为多次,并且我正在经历内存泄漏. 我已经在使用boost :: python来处理参考计数,并且我清除了通过在运行之间运行python程序创建的所有引用的全局字典.我有一些单身人士 - 可能是问题吗? 这是一个可处理的问题,还是Python解释器中的错误? 解决方案 您可以看到Nnorwitz的"错误"(第一个,从2007年起)作为" Wontfix",他的帖子在错误报告中. 为什么您打电话Py_Initialize/Py_Finalize不止一次? 为什么
22 2023-07-15
编程技术问答社区