备忘重构时遇到的一些问题

2022年5月18日 817点热度 1人点赞 0条评论

最近在进行整个系统的重构,虚拟环境重新进行了搭建,代码在旧环境中运行良好,但在新环境中却产生了一些问题,可能是包版本的一些问题导致的,这里备忘一下:

1、pywin32导入时报错:ImportError: DLL load failed while importing win32api。网上搜索了一下问题,大部分的解决方案是更换旧版本,我觉得算不上彻底解决。既然dll文件找不到,我们就研究下这个包用的dll文件是啥。在.venv\Lib\site-packages\pywin32_system32 目录下,我们发现有pythoncom38.dll和pywintypes38.dll两个文件(根据解释器版本不同,文件名可能会和我使用的不一样),将这两个文件拷贝到C:\Windows\System32\ 目录下,问题解决。

2、给模块命名,一定要避开关键字:我的模块中有个专门用来封装csv文件操作的类,重构时我给这个模块取名为csv.py,在后面代码调试过程中,经常引发莫名其妙的异常:

File "\.venv\lib\site-packages\pandas\core\arrays\categorical.py", line 3, in <module>
from csv import QUOTE_NONNUMERIC
ImportError: cannot import name 'QUOTE_NONNUMERIC' from 'csv' (\core\csv.py)

从报错信息上可以看到问题所在,有模块调用pandas,在pandas import csv包时,因为某些原因,引入了我的项目文件csv.py,引发异常。研究了半天没搞明白为什么pandas会从我的项目文件引入,总之给csv文件改名之后问题就消失了。感觉最大的可能是因为做相对引用时修改了sys.path属性造成的,因为问题解决了就没有再深入研究,感觉是这个原因可能性较高。

3、新版的pandas将弃用append方法,在调试代码时发现提示:FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.根据提示,df = df.append() 需要改写为 df = pd.concat([df,new_line])

以上备忘

QThinker

前地产从业者,假装是个程序员,热爱编程与交易 自研QThinker量化交易框架

文章评论