调用python2中子子模块中的函数

时间:2017-09-01 03:03:41

标签: python keras python-module

这在Python3中是合法的。

import keras
keras.preprocessing.sequence.pad_sequences(...)

但我必须将其更改为此才能在Python2中工作。

from keras.preprocessing import sequence
sequence.pad_sequences(...)

Keras有什么问题或者这是Python3中的新功能吗?

根据我的最佳知识,此问题尚未被提出过。对不起,如果这是一个愚蠢的问题,但我真的不知道我应该用什么关键词来搜索这个......

1 个答案:

答案 0 :(得分:0)

这取决于模块。如果子模块的名称包含在模块__all__的{​​{1}}中,您就可以按照预期的方式访问它。您可以在我的回答here中查看__init__.py的工作原理。或者阅读the documentation on packages

  

__all__语句使用以下约定:如果包的import代码定义了名为__init__.py的列表,则它将被视为{{}时应导入的模块名称列表。遇到{1}}。在发布新版本的软件包时,由软件包作者决定是否保持此列表的最新状态。如果包装作者没有看到从包装中导入*的用途,也可能决定不支持它。

对于__all__,模块似乎from package import *

  • 未定义keras
  • __init__.py
  • 中不包含__all__