python的ctypes加载遇到相互依赖的库如何处理?

现在又两个库函数a.so和b.so,现在想加载a库实现a库里的ar方法,加载a库的时候报错提示OSError: /usr/lib/a.so: undefined symbol:bf,经过核实bf在b库里于是加载b库,发现b库也报错OSError: /usr/lib/b.so: undefined symbol:af,进经过了解两个库相互依赖,导致ctyps两个库都无法加载,从而不能实现a库方法的调用。想问下大家:
1.这类问题如何处理?
2.有没有指定加载库里的函数的方法

2个回答

相互依赖的库编译成单独的SO??????这不合理呀。两个合并编译为一个so还差不多。

luyangever
luyangever 现实情况就是两个单独的库,但是他们之间相互依赖
大约 2 个月之前 回复

from ctypes import *
RTLD_LAZY = 0x0001
LAZYLOAD= RTLD_LAZY | RTLD_GLOBAL
...
libubx=CDLL("libubx.so",mode= LAZYLOAD)
libpos=CDLL("libpos.so",mode= LAZYLOAD)
....

https://stackoverflow.com/questions/55724636/python-2-7-ctypes-circular-dependencies-of-so-shared-libraries

luyangever
luyangever 要明确的指定下,我周五的思路是,我就打出来看看他的三个枚举RTLD_GLOBAL,RTLD_LOCAL,DEFAULT_MODE,发现他们都为0,好像都不对,奇怪的很
大约 2 个月之前 回复
luyangever
luyangever 其实他默认的三个枚举我都试过了,有点不明白为啥RTLD_LAZY = 0x0001
大约 2 个月之前 回复
luyangever
luyangever 上周五,我找到解决方案了,不过你回答的比较详细,多谢
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
为什么python使用ctypes无法加载qt生成的dll?
使用ctypes可以加载windows生成的dll,但是无法加载qt生成的dll,dll使用vs depends工具 查看,确定是已经以C语言风格导出了dll,但是ctypes加载qt生成的dll报错:找不到指定的 模块,不知道为什么? 开发环境: window7 x86 python3.4 qt5.5
python Ctypes 加载使用了C++amp的dll 失败
在使用python 的Ctypes调用 里面包含了C++ amp的dll的时候就会报这个错误[WinError 1114] 动态链接库(DLL)初始化例程失败。 但是如果去掉C++AMP的部分就不会报错了求解。
python3 ctypes 的 结构体定义中,怎么引用自身?
我这么使用时提示说“找不到Sentence_link” ``` class Sentence_link(ctypes.Structure): _fields_= [("para_idx", ctypes.c_ulong), ("sent_idx", ctypes.c_ulong),("sent_init",ctypes.c_int),("msg_buff",ctypes.c_char_p), ("next",ctypes.POINTER(Sentence_link))] ``` ``` _fields_= [("para_idx", ctypes.c_ulong), ("sent_idx", ctypes.c_ulong),("sent_init",ctypes.c_int),("msg_buff",ctypes.c_char_p), ("next",ctypes.POINTER(Sentence_link))] NameError: name 'Sentence_link' is not defined ``` 请问该如何引用自身?
Python ctypes 中回调函数设置
我在python中想调用dll库的函数,但是这个dll库的函数参数需要设置一个回调函数指针,如下 void setCallBack(void(*)(Data &a)) Data is C struct, declare as below typedef struct { int index, .... }Data 我在python中调用代码如下: mydll = cdll.LoadLibrary("XXX.dll") callback_type = CFUNCTYPE(None, POINTER(Data)) callback = callback_type(Data) mydll.setCallBack(callback) def dataResponse(data): print data.index class Data(ctypes.Structure): _fields_ = [("index", c_int)] 调用时发生"WindowsError: [Error -1073741795] Windows Error 0xC000001D"错误, 请大家帮忙看一下如何设置回调函数,感觉如何参数类型是C++引用的话,POINTER好像是不对的。
在python中用ctypes模块调用Windows API的问题
用python做一个windows平台的工具,纯python缺乏接口,因此想用ctypes模块调用Windows API来实现,碰到了下列问题: 用python封装Windows 中的SystemTimeToFileTime,调用过程中提示参数不对。 Windows API 原型 BOOL WINAPI SystemTimeToFileTime( __in const SYSTEMTIME* lpSystemTime, __out LPFILETIME lpFileTime ); python 封装代码: from ctypes import * from ctypes.wintyps import * #封装 SYSTEMTIME 类型 class SYSTEMTIME(Structure): __fields__ = [("Year", WORD), ("Month", WORD), ("DayOfWeek", WORD), ("Day", WORD), ("Hour", WORD), ("Min", WORD), ("Sec", WORD), ("MillSec", WORD)] # FILETIME class FILETIME(Structure): __fields__ = [("dwLowDateTime", DWORD), ("dwHighDateTime", DWORD)] # 封装SystemTimeToFileTime proto_systm2filetm = WINFUNCTYPE(BOOL, POINTER(SYSTEMTIME), POINTER(FILETIME)) paramflags = (1, "systime", None), (2, "filetime", None) SystemTimeToFileTime = proto_systm2filetm(("SystemTimeToFileTime", windll.kernel32), paramflags) #测试 atime = FILETIME() atime.dwLowDateTime = 0 atime.dwHighDateTime = 100 systm = SYSTEMTIME() systm.Year = 2015 systm.Month = 1 systm.Day = 5 systm.DayOfWeek = 1 systm.Hour = 1 systm.Min = 17 systm.Sec = 0 print SystemTimeToFileTime(systime = pointer(systm), filetime=pointer(atime)) print "error:%d" % GetLastError() #结果: 提示 print SystemTimeToFileTime(systime = pointer(systm), filetime=pointer(atime)) TypeError: call takes exactly 1 arguments (2 given) 疑问:SystemTimeToFileTime明明声明了2个参数,为啥提示只接受一个参数? 尝试修改,将paramflags该成: paramflags = (1, "systime", None), (1, "filetime", None) 这下没有提示参数个数不对了,但是函数执行返回FALSE, GetLastError == 87(参数不正确)。 请各位帮忙把把脉,API中的 IN, OUT参数,用ctypes应该如何包装? 使用时如何传实参? 万分感谢!
python使用ctypes调用c++函数时怎样传入IPlImage型的数据?
python 代码 ``` import ctypes import numpy as np import cv2 from Face_Alignment import warp_im, coord5point, resizeimage import time from numpy.ctypeslib import ndpointer start = time.time() so = ctypes.cdll.LoadLibrary lib = so("./build/liblandmark.so") class StructPointer(ctypes.Structure): _fields_ = [("x",ctypes.c_double), ("y",ctypes.c_double)] lib.test.argtypes = [ctypes.c_int,ndpointer(ctypes.c_uint8)] path = "/Huang/images/3.jpeg" img = cv2.imread(path) imge_1 = cv2.cv.LoadImage(path, cv2.cv.CV_LOAD_IMAGE_COLOR) point = lib.landmark(1,imge_1) ``` c++代码: ``` extern "C" { seeta::StructPointer landmark(int argc, IplImage* imge) { seeta::FaceDetection detector("./build/seeta_fd_frontal_v1.0.bin"); detector.SetMinFaceSize(40); detector.SetScoreThresh(2.f); detector.SetImagePyramidScaleFactor(0.8f); detector.SetWindowStep(4, 4); seeta::FaceAlignment point_detector((MODEL_DIR + "seeta_fa_v1.1.bin").c_str()); IplImage *img_grayscale = NULL; cvCvtColor(imge, img_grayscale, CV_BGR2GRAY);//把从python中获得的iplimage参数灰度化传给img_grayscale IplImage *img_color = imge; ``` 运行结果:Traceback (most recent call last): File "test.py", line 27, in <module> point = lib.landmark(1,imge_1) ctypes.ArgumentError: argument 2: <type 'exceptions.TypeError'>: Don't know how to convert parameter 2 这里python中的Iplimage 参数应该如何通过ctypes传入c++中。我的实际问题是怎样把在python中获得的np.array传入c++函数中并赋值给Iplimage型的参数
AIX系统Python缺少_ctypes模块
AIX6.1,自带的Python2.7.5,试图在上面安装setuptools插件,报缺少_ctypes模块, ![图片说明](https://img-ask.csdn.net/upload/201708/03/1501740395_976629.png) 检查了Linux系统和Windows,在Python的lib库里面有_ctypes.so和_ctypes_test.so两个库,但AIX下只有test一个。 ![AIX](https://img-ask.csdn.net/upload/201708/03/1501740669_470043.png)AIX系统 ; ![Ubuntu](https://img-ask.csdn.net/upload/201708/03/1501740697_443887.png)Ubuntu系统 试过重装Python-libs这个RPM包,但报包冲突。升级Python也是诸多系统库缺少或者安装冲突。 求助各位大神,该如何破,缺少_ctypes模块,不仅setuptools,还有pip等组件都装不了。
Python 使用ctypes的shell32 获取文件详细属性
import ctypes shell32 = ctypes.windll.LoadLibrary('shell32.dll') folderitems= 应该如何将文件路径转化为对象?'F:\\1.pptx' a = folderitems.ExtendedProperty("Title") print a
python3使用ctypes有些c类型没有怎么办?
被实习作业折磨到摸不着头脑 菜狗一只,平常总是靠度娘解决问题,但这次真的搜不到了(╥╯^╰╥) 实在不想用C++......而且已经丢了很久了...... 学校实习任务开发指纹仪的相关软件,调用dll函数。 问题1: dll函数:HANDLE_stdcall sensorOpen(int index) 这个类型是句柄HANDLE,其返回值需要用到,但是Python没有直接HANDLE,我用int接收暂没出现问题,怕之后会遇到先问一个。 问题2: dll函数:int_stdcall sensorCapture(HANDLE handle,unsigned char* imageBuffer, int imageBufferSize)//获取图像 handle就是上面那个,unsigned char* 文档解释是接收的图像即是输入的参数也会输出,后续指纹算法需要,ctypes也没有,怎么实现? 我目前使用imageBuffer = create_string_buffer(所需空间大小),但是没有采集到图像(我检验了该函数返回值,为0,即无图像) 我也试过了create_unicode_buffer,结果也一样。到底是使用方法问题还是其他导致我真的没采集到图像 问题3:(虽然前面的还没解决但先问下)(准确的说目前卡在这里) dll函数:HANDLE stdcall BIOKEY_INIT(int License, WORD *isize, BYTE*Params, BYTE *Buffer, intImageFlag) 问题出在isize:文档描述:[in] 传入一个无符号双字节长度为22 的数组,且 isize[0]和isize[20]为传入图像宽度,isize[1]和 isize[21]为传入图像高度 这isize怎么提前定义? 我尝试使用isize = bytearray()处理,但是毕竟是双字节,光是宽度就有300多,但byte要在0-255之间,而且还不确定都是数字(我试过定义为整型数组,报错don't konw how to convert parameter 2)。作为指纹图像,虽然有函数可以修改采集图像的大小,但是太小了的话数据的完整性和可使用性就大打折扣。所以这个双字节咋整啊 问题4: 有些函数传入参数为int*,咋整......我先去看看ctypes的文档,但是我记得上次看的时候好像没有针对这种指针的...直接使用c_char_p吗?(目前没法验证这个方法是否可行,因为前面就走不通。。。) 总之目前就这些了,实习作业周三开始检查希望会的大佬帮帮我!谢谢啦! 我先滚去看文档了。。。
python 调用DLL 动态库之后 怎么释放
各位大神,请问python 利用 ctypes调用DLL之后怎么释放啊
python ctypes 调用DLL,读取工业摄像机出错
用python ctypes 模块,调用厂家提供的c写的DLL,来读取工业摄像机,cameraInit(k = mylib.CameraInit(byref(cInfor), -1, -1, cameraHandle *p_p_i)) 成功,但 g=mylib.Cameraplay( camerahandle p_p_i) ,出错, 有谁有这方面的经验呀
Win10 64位,python3.5, 用ctypes调用DLL,读取摄像头,存为numpy数据格式.
Win10 64位,python3.5, 用ctypes调用MVCAMSDK_X64.DLL,读取mindvision的摄像头,生成jpg图像,存为numpy数据格式,求完整python代码。以下运行到Cameraplay出错,以下对应C的原形: typedef int CameraHandle; 原型: MVSDK_API CameraSdkStatus CameraSdkInit ( int iLanguageSel ); MVSDK_API CameraSdkStatus CameraInit ( tSdkCameraDevInfo* pCameraInfo, int emParamLoadMode, int emTeam, CameraHandle* pCameraHandle ); MVSDK_API CameraSdkStatus CameraPlay ( CameraHandle hCamera ); MVSDK_API CameraSdkStatus CameraEnumerateDevice ( tSdkCameraDevInfo *pDSCameraList, INT *piNums ); 以下为python 代码; from ctypes import * import numpy as np from ctypes.wintypes import * mylib=cdll.LoadLibrary('C:\Program Files (x86)\MindVision\SDK\X64\MVCAMSDK_X64.DLL') hand=HANDLE() i = c_int(1) t=c_int(-1) s=c_int(1) class tSdkCameraDevInfo(Structure): _fields_ = [('uVendorID', c_uint), ('uProductID', c_uint), ('acVendorName',c_char), ('acProductSeries',c_char), ('acProductName',c_char), ('acFriendlyName',c_char), ('acDevFileName',c_char), ('acFirmwareVersion',c_char), ('acSensorType',c_char), ('acPortType',c_char)] pi=pointer(i) ti=pointer(t) p_i=POINTER(c_int) p_p_i=p_i(i) pii=create_string_buffer(2) piii = create_unicode_buffer(2) cInfor=tSdkCameraDevInfo() l=mylib.CameraSdkInit(1) pp = create_unicode_buffer(4) j=mylib.CameraEnumerateDevice(byref(cInfor),pi) mylib.CameraInitEx.argtypes=(c_int,c_int,c_int) k = mylib.CameraInit(byref(cInfor), -1, -1, byref(hand)) g=mylib.Cameraplay(hand) ####这里出错了 print(l) print(j) print(k) print(hand)
自己网上下载的python库,如何使用pycharm进行安装使用呢?
在pycharm中setting里头添加ctypes,但是没有用,所以自己在网上下载。 下载的ctypes-1.0.2.win32-py2.5-AMD64.msi文件应该如何安装? 望哪位大神指导一下啊,谢谢。
python 调用C++ dll (该dll 依赖其他dll)
问题描述: C++中有两个类 bclass 和 nclass,其中nclass 里面的一个private变量就是bclass。 这两个类目前都被写成了动态库 libbclass.so 和 libnclass.so。 当我在Python中利用ctypes模块希望调用libnclass.so的时候,程序报错 OSError: libbclass.so: cannot open shared object file: No such file or directory 我的问题: 1、如何调用libnclass.so 2、如何在python中创建一个nclass类的实例,并调用该实例的方法add
用ctypes向dll传入的数组,返回python后,其中的数据有时正确有时错误,怎么办?
运行环境: win10 + anaconda5.3 + jupyter python文件 ``` import numpy as np import pandas as pd mylib = ctypes.cdll.LoadLibrary('mydll.dll') C_fun = mylib.func_name C_fun.restypes = None C_fun.argtypes = pass_args_Struct, c_double*10 # pass_args_Struct 是继承ctypes.Structure定义的结构体,代码略 def generate_Struct(data, 其他参数略): # 生成 pass_args_Struct,代码略 # data是个DataFrame,用于接收下面myClass的data属性 class myClass(): # myclass有个data属性,data是一个DataFrame # 其他代码略 def func1(self, x): # 删除self.data的一列,再根据x参数重新添加这一列,代码略 struct_x = generate_Struct(self.data, 其他参数略) myArr = (c_double*10)() C_fun(struct_x, myArr) npArr = np.ctypeslib.as_array(myArr,(10,)) return pd.Series(npArr, _column_names) # _column_names 定义略 def func2(self): # 生成df,df是个只有一列值的DataFrame,代码略 return df.apply(lamba x: self.func1(x[0]), axis=1, result_type='expand')) # 其他代码略 ``` mydll.dll中的代码 ``` #define API extern "C" __declspec(dllexport) typedef pass_args_Struct { // 对应于python中pass_args_Struct,代码略 } API void func_name(pass_args_Struct* x, double arr[]) { // 对arr进行一些操作,代码略 } ``` 在jupyter中: 导入前述Python文件并生成 myObject=myClass() 之后, 执行ret1 = myObject.func1()没什么问题, 但是ret2 = myObject.func2()的结果则有时正确有时错误,错误的时候,ret2中会出现一些NaN值和错误的值。 之前把generate_Struct()定义成myclass的一个方法,连ret1也会出错; 之前的func1(self, x)中采用: ``` func1(self, x): # 其他代码略 myArr = np.ctypeslib.as_array(myArr,(10,)) # 左边不用新名而直接用myArr return pd.Series(myArr, _column_names) ``` 则ret1会频繁出错,基本上是对一次就错一次。 程序一直能运行,只是结果有时不正确。 请教各位大牛,正确的写法是什么样子的? ==================================================== =====2018年11月30日更新==================================== 我可能发现问题了: Python文件TestX.py(放在PYTHONPATH下): ``` import numpy as np from ctypes import Structure, c_double, c_int, POINTER class struct_args(Structure): _fields_ = [('data',POINTER(c_double*2)), ('rows',c_int)] class test(): def __init__(self): self.data = None def get_args_2C(self): arr = np.ascontiguousarray(self.data[['foo','bar']].values, dtype=np.float) rows = c_int(arr.shape[0]) return struct_args(arr.ctypes.data_as(POINTER(c_double*2)), rows) ``` 在jupyter中: ``` import TestX import pandas as pd import numpy as np mydata = pd.DataFrame(np.arange(1600).reshape(800,2),columns=['foo','bar']) # 行数不要太小 mytest = TestX.test() mytest.data = mydata args = mytest.get_args_2C() np.ctypeslib.as_array(args.data,(800,)) ``` 输出的值经常是错误的。 ==================================================== =====2018年12月3日更新==================================== 不知道为什么,但总算是不出错了: python文件: ``` from ctypes import Structure,POINTER,c_double def Struct_A(ctypes.Structure): _fields_ = [(), # 其他成员略 ('my_arr',POINTER(c_double)] # 这个地方用c_double*10后面也会出错 class myClass(): def makeStructA(self, 其他参数): arr = (c_double*10)() SA = Struct_A(……,arr) # 其他成员略 return SA def myMethod(self, 其他参数): SA = self.makeStructA(其他参数) # myCfun是dll中的函数,功能是利用SA中数据进行一些计算,然后把结果写入SA.my_arr,具体代码略 myCfun(SA) ret = pd.Series(np.ctypeslib.as_array(SA.my_arr,(10,)), _columns_name) ret['odd'] = 1 # 这里随便新加点什么就不会出错了 return ret ``` 以上代码如果没有ret['odd']=1那一行,则myObject.myMethod()返回的Series中都是错误的值(看着像是内存未初始化,比如-2.24934335e308之类),而随便给ret添加点什么内容,返回值就是正确的了。 但是在以下计算中仍然会出错,只是出错的频率变小了,而且多运行几次就会正确: ``` class myClass(): # 接上文 def myOptimize(self, arg_name, arg_range): ret = pd.DataFrame({arg_name:arg_range}) _optimize = lambda arg: self.myMethod(**{arg_name:arg[arg_name]}) return ret.join(ret.apply(_optimize, axis=1, result_type='expand')) ``` ===================================== =====2018年12月7日更新==================================== 又出错了!!!12月3日写的: ``` ret['odd'] = 1 # 这里随便新加点什么就不会出错了 ``` 那个函数确实不出错了,但是别的函数用同样的写法(先生成c_double*shape再传入dll在C中写入值)得到的ret无论添加行还是添加列,多运行几次总会出错(内存被清理)。 换一种写法: ``` 略 arr=np.zeros(shape) 略 # 然后传入arr.ctypes.data_as(POINTER(c_double*10)) ``` 目前暂时不出错了。 =====2018年12月13日更新==================================== 前面的写法有问题:用函数生成结构体(比如makeStructA)再传递给dll就会出错,直接将makeStuctA的代码放到myMethod中就不会出错。 另外,传递结构体时用byref就不会出错了,在dll中用malloc给结构体的成员赋值都不会出错。
python进行C扩展的各种方法本质原理是什么?
我学习了利用C API,Ctypes,Cython等C扩展方式的使用方法,我想这些方法在底层应该有共通的实现原理,我想请教一下高手解释一下这个本质原理,对于C扩展模块能够引入Python与Python模块相互调用的本质原因是什么?
用pyinstaller封装python3.6脚本,生成的exe无法加载所需的包怎么办?
我已经尝试了各种办法,在创建exe的时候用-p命令添加python\lib\side-package里面我所要用的包的文件夹路径,或者在后面加上--path=,但是生成的exe文件在运行的时候还是会显示这样: ``` [15664] PyInstaller Bootloader 3.x [15664] LOADER: executable is E:\python\exe\dist\Timer.exe [15664] LOADER: homepath is E:\python\exe\dist [15664] LOADER: _MEIPASS2 is NULL [15664] LOADER: archivename is E:\python\exe\dist\Timer.exe [15664] LOADER: Extracting binaries [15664] LOADER: Executing self as child [15664] LOADER: set _MEIPASS2 to C:\Users\pm494\AppData\Local\Temp\_MEI156642 [15664] LOADER: Setting up to run child [15664] LOADER: Creating child process [15664] LOADER: Waiting for child process to finish... [17992] PyInstaller Bootloader 3.x [17992] LOADER: executable is E:\python\exe\dist\Timer.exe [17992] LOADER: homepath is E:\python\exe\dist [17992] LOADER: _MEIPASS2 is C:\Users\pm494\AppData\Local\Temp\_MEI156642 [17992] LOADER: archivename is E:\python\exe\dist\Timer.exe [17992] LOADER: SetDllDirectory(C:\Users\pm494\AppData\Local\Temp\_MEI156642) [17992] LOADER: Already in the child - running user's code. [17992] LOADER: manifestpath: C:\Users\pm494\AppData\Local\Temp\_MEI156642\Timer.exe.manifest [17992] LOADER: Activation context created [17992] LOADER: Activation context activated [17992] LOADER: Python library: C:\Users\pm494\AppData\Local\Temp\_MEI156642\python36.dll [17992] LOADER: Loaded functions from Python library. [17992] LOADER: Manipulating environment (sys.path, sys.prefix) [17992] LOADER: Pre-init sys.path is C:\Users\pm494\AppData\Local\Temp\_MEI156642\base_library.zip;C:\Users\pm494\AppData\Local\Temp\_MEI156642 [17992] LOADER: sys.prefix is C:\Users\pm494\AppData\Local\Temp\_MEI156642 [17992] LOADER: Setting runtime options [17992] LOADER: Bootloader option: pyi-windows-manifest-filename Timer.exe.manifest [17992] LOADER: Initializing python [17992] LOADER: Overriding Python's sys.path [17992] LOADER: Post-init sys.path is C:\Users\pm494\AppData\Local\Temp\_MEI156642\base_library.zip;C:\Users\pm494\AppData\Local\Temp\_MEI156642 [17992] LOADER: Setting sys.argv [17992] LOADER: setting sys._MEIPASS [17992] LOADER: importing modules from CArchive [17992] LOADER: extracted struct [17992] LOADER: callfunction returned... [17992] LOADER: extracted pyimod01_os_path [17992] LOADER: callfunction returned... [17992] LOADER: extracted pyimod02_archive [17992] LOADER: callfunction returned... [17992] LOADER: extracted pyimod03_importers [17992] LOADER: callfunction returned... [17992] LOADER: Installing PYZ archive with Python modules. [17992] LOADER: PYZ archive: out00-PYZ.pyz [17992] LOADER: Running pyiboot01_bootstrap.py [17992] LOADER: Running pyi_rth_win32comgenpy.py [17992] LOADER: Running Timer.py Traceback (most recent call last): File "Timer.py", line 24, in <module> ModuleNotFoundError: No module named 'logilib' [17992] Failed to execute script Timer [17992] LOADER: OK. [17992] LOADER: Cleaning up Python interpreter. [15664] LOADER: Back to parent (RC: -1) [15664] LOADER: Doing cleanup [15664] LOADER: Freeing archive status for E:\python\exe\dist\Timer.exe ``` 我尝试在另一台装有python3.5和要用的包的电脑上使用pyinstaller,按照同样的方法生成exe,运行结果是一样的。我看了看代码中的24行是加载BeautifulSoup命令:from bs4 import BeautifulSoup 谷歌看了半天也找到合适的解决办法,求大神帮我看看到底是怎么回事? pyinstaller运行过程是这样的: ``` E:\python\exe>pyinstaller -F -d Timer.py --path=E:/python/exe/Lib;E:/python/exe/Lib/site-package;E:/python/exe/Lib/site-packages/xlwings;E:/python/exe/Lib/site-packages/bs4;E:/python/exe/Lib/site-packages/selenium 5 WARNING: Internal error: early pywin32 import was introduced 63 INFO: PyInstaller: 3.2.1 63 INFO: Python: 3.6.2 64 INFO: Platform: Windows-10-10.0.14393-SP0 66 INFO: wrote E:\python\exe\Timer.spec 68 INFO: UPX is not available. 71 INFO: Extending PYTHONPATH with paths ['E:\\python\\exe', 'E:\\python\\exe\\Lib', 'E:\\python\\exe\\Lib\\site-package', 'E:\\python\\exe\\Lib\\site-packages\\xlwings', 'E:\\python\\exe\\Lib\\site-packages\\bs4', 'E:\\python\\exe\\Lib\\site-packages\\selenium', 'E:\\python\\exe'] 75 INFO: checking Analysis 76 INFO: Building Analysis because out00-Analysis.toc is non existent 77 INFO: Initializing module dependency graph... 80 INFO: Initializing module graph hooks... 82 INFO: Analyzing base_library.zip ... 2889 INFO: running Analysis out00-Analysis.toc 2892 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable required by D:\workapp\Python\python.exe 3230 INFO: Caching module hooks... 3234 INFO: Analyzing E:\python\exe\Timer.py 4930 INFO: Processing pre-safe import module hook win32com 6402 INFO: Loading module hooks... 6402 INFO: Loading module hook "hook-encodings.py"... 6488 INFO: Loading module hook "hook-pydoc.py"... 6489 INFO: Loading module hook "hook-pythoncom.py"... 6706 INFO: Loading module hook "hook-pywintypes.py"... 6915 INFO: Loading module hook "hook-selenium.py"... 6920 INFO: Loading module hook "hook-win32com.py"... 6920 INFO: Loading module hook "hook-xml.dom.domreg.py"... 6921 INFO: Loading module hook "hook-xml.py"... 6940 INFO: Looking for ctypes DLLs 7045 WARNING: library coredll required via ctypes not found 7054 INFO: Analyzing run-time hooks ... 7058 INFO: Including run-time hook 'pyi_rth_win32comgenpy.py' 7067 INFO: Looking for dynamic libraries 7380 INFO: Looking for eggs 7381 INFO: Using Python library D:\workapp\Python\python36.dll 7382 INFO: Found binding redirects: [] 7389 INFO: Warnings written to E:\python\exe\build\Timer\warnTimer.txt 7401 INFO: checking PYZ 7401 INFO: Building PYZ because out00-PYZ.toc is non existent 7403 INFO: Building PYZ (ZlibArchive) E:\python\exe\build\Timer\out00-PYZ.pyz 8492 INFO: Building PYZ (ZlibArchive) E:\python\exe\build\Timer\out00-PYZ.pyz completed successfully. 8503 INFO: checking PKG 8503 INFO: Building PKG because out00-PKG.toc is non existent 8504 INFO: Building PKG (CArchive) out00-PKG.pkg 11271 INFO: Building PKG (CArchive) out00-PKG.pkg completed successfully. 11275 INFO: Bootloader D:\workapp\Python\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run_d.exe 11275 INFO: checking EXE 11276 INFO: Building EXE because out00-EXE.toc is non existent 11278 INFO: Building EXE from out00-EXE.toc 11279 INFO: Appending archive to EXE E:\python\exe\dist\Timer.exe 11288 INFO: Building EXE from out00-EXE.toc completed successfully. ``` ------------------------------------------------------------------------ 刚刚试了一下另一个包,发现问题可能就是出在脚本中的bs4上面,在加载另一个包的时候并没有问题,程序可以运行。所以为什么是bs4这个包?到底该怎么找到问题呢?
ctypes里有什么函数可以从地址执行方法或者有其他办法解决么?
![图片说明](https://img-ask.csdn.net/upload/201810/30/1540881878_780212.png) 问一下ctypes里有什么函数可以从地址执行方法或者有其他办法解决么?
问题: python如何调用Qt带有GUI模块的DLL?
<br/> **环境配置:**<br/> Win10 X64<br/> Python 3.5.2 32 bit <br/> Qt 5.5.1 MinGW 4.9.2 32.bit<br/> <br/><br/> **Qt DLL代码实现:** ```Qt extern "C" __declspec(dllexport) void showMessageWindow(char *msg) { QMessageBox::information(nullptr, "Title", msg); } extern "C" __declspec(dllexport) int add(int num1, int num2) { return num1 + num2; } ``` **python调用代码:** ```python from ctypes import * dll = cdll.LoadLibrary("QtDllTest.dll") print("add result=", dll.add(1, 2)) dll.showMessageWindow(b"Hello, Python Call C++!"); ``` **python执行结果:** ![图片说明](https://img-ask.csdn.net/upload/201612/12/1481523758_959360.png) **代码说明:** 1. python正常调用add函数。执行结果打印出了"add result= 3"; 2. python调用showMessageWindow失败。showMessageWindow设计GUI模块。 <br/><br/> > **问题: python如何调用Qt带有GUI模块的DLL?** <br/><br/> **本人的探索:** * python可以正常调用VC带UI的DLL. * 网上资料建议在可执行程序下,加入Qt5.5.1/5.5/mingw492_32的platforms和plugins目录下所有内容.结果仍然出现上面的错误.
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问