python2.7模块目录无法识别子模块

python2.7模块目录无法识别子模块,python,python-2.7,python-import,python-packaging,Python,Python 2.7,Python Import,Python Packaging,我有一个python模块dir设置如下: versions/__init__.py versions/v1_0.py versions/v2_0.py \uuuu init\uuuu.py为空,但每个v*.py文件都定义了一些函数。然后,我尝试从版本导入*导入所有子模块,但当我使用dir()打印出所有加载的模块时,它们没有列出,并且我无法使用任何子模块函数,例如v1\u 0.update() 我是否错误地设置了版本模块 以下是一个最小可复制示例: 下面是find和more命令的结果,该命令显示

我有一个python模块dir设置如下:

versions/__init__.py
versions/v1_0.py
versions/v2_0.py
\uuuu init\uuuu.py
为空,但每个
v*.py
文件都定义了一些函数。然后,我尝试从版本导入*导入所有子模块,但当我使用
dir()
打印出所有加载的模块时,它们没有列出,并且我无法使用任何子模块函数,例如
v1\u 0.update()

我是否错误地设置了
版本
模块

以下是一个最小可复制示例:

下面是
find
more
命令的结果,该命令显示了每个python文件的文件结构以及文件内容

$ find .
.
./versions
./versions/__init__.py
./versions/__init__.pyc
./versions/v1_0.pyc
./versions/v1_0.py
使用此设置和位于
的pwd,我执行了以下操作:

$ python2
Python 2.7.5 (default, Aug  4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from versions import *
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> versions.v1_0.update
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'versions' is not defined
>>> from versions.v1_0 import update
>>> update
<function update at 0x10428c0>
$python2
Python 2.7.5(默认值,2017年8月4日,00:39:18)
[GCC 4.8.5 20150623(Red Hat 4.8.5-16)]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从版本导入*
>>>目录()
[“内置”、“文件”、“名称”、“包装”]
>>>versions.v1\u 0.update
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“版本”
>>>从versions.v1\u 0导入更新
>>>更新

在python文档中,我发现如果未定义
\uuuuuuuuuuuuuuuuuuuuuuu
,那么模块导入的
只会初始化
模块
,然后导入在
模块
中明确定义的任何名称。因此,在我的例子中,由于
versions/\uuu init\uuuuuuuuuuy.py
没有明确定义
v1\u 0
,所以它没有被导入。

您是否尝试过一个模块一个模块地导入,比如:from versions.v1\u 0.py import method\u one您可以提供一个代码的示例,只是为了确保没有遗漏任何重要内容?@ShadowRanger查看我的更新帖子。您的
\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuupy
是否定义了一个
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
$ python2
Python 2.7.5 (default, Aug  4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from versions import *
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> versions.v1_0.update
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'versions' is not defined
>>> from versions.v1_0 import update
>>> update
<function update at 0x10428c0>