__all__Python 2.7.5 中不允许使用 Unicode 文字吗?我在顶部有一个__init__.py文件from __future__ import unicode_literals,以及编码 utf-8。(其中还有一些 unicode 字符串,因此是未来的导入。)
为了确保在使用 导入时只有部分模块可见from mypackage import *,我已将我的类添加到__all__. 但我明白了TypeError: Item in ``from list'' not a string。这是为什么?漏洞?
但是,当我将类名转换为 str in 时__all__,它工作得很好。
[当我from mypackage import SomeClass在下面的 run.py 中指定时它也可以工作......因为其中的项目__all__没有被处理。]
我的包/somemodule.py:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
class SomeClass(object):
pass
我的包/ __init__.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from .somemodule import SomeClass
__all__ = ['SomeClass']
运行.py:
# -*- coding: utf-8 -*-
from __future__ import print_function
from __future__ import unicode_literals
from mypackage import *
print('yay')
为避免该错误,我将“全部”声明更改为:
__all__ = [str('SomeClass')] #pylint: disable=invalid-all-object
这当然是 pylint 抱怨的。
我的另一个选择是不导入unicode_literals并将 init 中的所有字符串显式转换为带有u'uni string'.