chinapnr / fishbase

自主开发、整理的一套 Python 基础函数库,涵盖 system 系统增强包、logger 日志记录增强包、file 文件处理增强包、 date 日期处理函数包、data 数据信息处理函数包、csv 处理增强函数包、crypt 加密/编码增强包等,可减少程序开发工作量、降低引用复杂度。
MIT License
94 stars 29 forks source link

init_project_by_yml 用户目录会报错 #284

Closed coderQuan closed 3 years ago

coderQuan commented 3 years ago
WX20200918-153509@2x
wingfish commented 3 years ago

收到,我们看一下哪里出问题了,并且为什么 ut 没有查出来。

itaa commented 3 years ago

排查了一下,原因是新版的yaml.load()需要指定Loader。 请 @halfapple 看看优化一下。 参考 pyyaml 官方文档

When LibYAML bindings are installed, you may use fast LibYAML-based parser and emitter as follows:

>>> yaml.load(stream, Loader=yaml.CLoader)
>>> yaml.dump(data, Dumper=yaml.CDumper)

If you don't trust the input stream, you should use:

>>> yaml.safe_load(stream)
halfapple commented 3 years ago
param1 = {'0': 100}
print(param1['0'])  # 100

param2 = '0123456'
print(param2[0])  # '0'

print(param2['0'])  # TypeError: string indices must be integers

@coderQuan , 从目前的截屏信息看,

程序 105 行出现了警告信息:calling yaml.load() without Loader=... is deprecated (这个是由于高版本的 yaml 希望可以用速度更快 CLoader 来执行导致,我们这里会在下一个版本中优化)

程序 106 行首次出现了错误信息:string indices must be integers,在上一行发生警告的情况下,程序继续对 yml_data 做了读取操作,导致该 TypeError 发生,类似这里的 param2['0'] 的报错。我们会在下一个版本中优化,比如做一些安全检查。

你可以再检查下配置文件:server-project-template.yaml ,注意其中的空格。或者把配置文件贴出来,方便我们继续跟踪排查。

非常感谢 :-)

coderQuan commented 3 years ago

发现文件不存在也会报同样的错误。所以使用绝对路径就可以了。谢谢🙏

WX20200929-090729@2x