pkgutil get_data:AttributeError:'NoneType'对象没有属性'decode'

时间:2019-10-28 11:50:43

标签: python python-3.x python-3.6

我编写了一个测试,其中要像这样提取本地资源文件:

from pkgutil import get_data

@fixture(scope='session')
def ref_o_full():
    return pd.read_csv(StringIO(get_data('test_data', 'ref_o.csv').decode()))

运行测试时,出现以下异常:

test setup failed
@fixture(scope='session')
    def ref_o_full():
>       return pd.read_csv(StringIO(get_data('test_data', 'ref_o.csv').decode('utf8')))
E       AttributeError: 'NoneType' object has no attribute 'decode'

但是,如果我要在调试模式下运行测试,则不会发生此异常。对我来说,感觉像是某种比赛状况?

我已改用每次都可以使用的以下内容:

from pkg_resources import resource_filename
from os.path import join as join_path

@fixture(scope='session')
def ref_o_full():
    dir = resource_filename(__name__, 'test_data')
    return pd.read_csv(join_path(dir, 'ref_o.csv'))

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,只需确保_ init _ .py文件存在于“ test_data”目录中即可。这将有助于找到包裹的方法。