在Python3.8中,是否可以从不同的目录导入包中的所有模块?

在Python3.8中,是否可以从不同的目录导入包中的所有模块?,python,python-3.x,python-3.6,python-3.7,Python,Python 3.x,Python 3.6,Python 3.7,我正在使用Python 3.8。我的目录结构如下: ├── package │   ├── __init__.py │   └── test2.py └── test.py import package package.x() ├── package │ ├── __init__.py │ └── test2.py | └── test3.py └── test.py 测试2的内容: def x(): 打印(999) _uuuinit_uuuuu.py的内容: 来自test2

我正在使用Python 3.8。我的目录结构如下:

├── package
│   ├── __init__.py
│   └── test2.py
└── test.py
import package
package.x()
├── package
│   ├── __init__.py
│   └── test2.py
|   └── test3.py
└── test.py
测试2的内容:

def x():
打印(999)
_uuuinit_uuuuu.py的内容:

来自test2导入的
*
test.py的内容:

导入包
package.x()
运行test.py会出现以下错误:

来自test2导入的
*
ModuleNotFoundError:没有名为“test2”的模块

我希望test.py按预期工作。请提供帮助。

正如@hjpotter92所说,问题出在
\uuuu init\uuuu.py
文件中,因为导入应该是:

from .test2 import *
然后要使用
test.py
中的
test2.py
中的函数,您只需要如下内容:

├── package
│   ├── __init__.py
│   └── test2.py
└── test.py
import package
package.x()
├── package
│   ├── __init__.py
│   └── test2.py
|   └── test3.py
└── test.py
您可以找到有关此主题的更多信息和一些建议

编辑

您必须使用
from.test2 import*
而不是
从test2 import*
导入的主要原因是
test2
位于Python称之为
包的内部(您使用相同的名称调用目录),并且它应该在同一包的外部使用(在
test.py
),否则,您不需要使用
来导入它

例如,如果您有这样的结构:

├── package
│   ├── __init__.py
│   └── test2.py
└── test.py
import package
package.x()
├── package
│   ├── __init__.py
│   └── test2.py
|   └── test3.py
└── test.py
test3.py
中,您可以执行:
从test2导入x
,因为它位于相同的
包中
(命名包)

表示模块所在的包,例如,如果您想在
test.py
中导入而不使用
\uuuu init\uuuuuuuuuuuuupy
则应执行以下操作:
从package.test2导入*


希望这能对您有所帮助:)

正如@hjpotter92所说,问题出在
\uuuu init\uuuuuuu.py
文件中,因为导入应该是:

from .test2 import *
然后要使用
test.py
中的
test2.py
中的函数,您只需要如下内容:

├── package
│   ├── __init__.py
│   └── test2.py
└── test.py
import package
package.x()
├── package
│   ├── __init__.py
│   └── test2.py
|   └── test3.py
└── test.py
您可以找到有关此主题的更多信息和一些建议

编辑

您必须使用
from.test2 import*
而不是
从test2 import*
导入的主要原因是
test2
位于Python称之为
包的内部(您使用相同的名称调用目录),并且它应该在同一包的外部使用(在
test.py
),否则,您不需要使用
来导入它

例如,如果您有这样的结构:

├── package
│   ├── __init__.py
│   └── test2.py
└── test.py
import package
package.x()
├── package
│   ├── __init__.py
│   └── test2.py
|   └── test3.py
└── test.py
test3.py
中,您可以执行:
从test2导入x
,因为它位于相同的
包中
(命名包)

表示模块所在的包,例如,如果您想在
test.py
中导入而不使用
\uuuu init\uuuuuuuuuuuuupy
则应执行以下操作:
从package.test2导入*


希望这能帮助你:)

我想应该是
从.test2
导入test2,也许可以试试这个:导入包。test2@hjpotter92谢谢它解决了这个问题,我认为应该是从.test2导入测试2,或者试试这个:导入包。test2@hjpotter92谢谢它解决了这个问题。请您解释一下为什么“从test2导入*”不起作用。它在IDLECOLD中工作。请解释为什么“从test2导入*”不工作。它从空闲状态开始工作