ImportError: How do I import a python module?
ImportError: How do I import a python module?
我尝试导入 Python 模块但失败了。这是我的文件夹层次结构:
package/
folder/
a.py
utils/
b.py
在模块 a.py
中,我尝试导入 b.py
但收到 ImportError
.
如何使用模块 b
到 a.py
中的函数 test
?
文件:
a.py
def usetest():
test()
b.py
def test():
print("hello world")
可以使用几种不同的语法导入 Python 模块:
- 一个简单的
import ...
语句:import package.utils.b
现在可以让您使用 package.utils.b.test()
。不幸的是它很长。
import ... as ...
语句:import package.utils.b as b
将让您使用 b.test()
。
- 一个
from ... import ...
语句:from package.utils.b import test
会让你使用test()
。
- 一个
from ... import ... as ...
语句:from package.utils.b import test as test_me
会让你使用test_me()
。
所有这些选项都将 运行 具有完全相同的功能。尝试将它们放在 a.py
.
的顶部
指定整个路径,package.utils.b
称为绝对形式。也可以相对形式导入:
import ..utils.b as b
会让你使用 b.test()
。注意开头的 2 个点,表示 上一个文件夹。
from ..utils.b import test
会让你使用 test()
.
from ..utils.b import test as test_me
会让你使用 test_me()
.
开头的每个点指定上一个文件夹,除了一个,上面写着“这个文件夹”。
如果您尝试 运行 的主文件在包内 (a.py
),您应该切换到包含包的目录,并且 运行 文件使用 -m
。在您的情况下,切换到包含 package
和 运行 python -m package.folder.a
.
的目录
有关导入模块的详细信息,请参阅 Python Docs。
您还可以使用完整路径动态导入 Python 模块。它更高级,不会在此答案中涵盖。
package/
folder/
a.py
utils/
b.py
进口:
如果包是您的主文件夹,则使用以下语法导入模块。
import utils.b as b
b.test()
**or**
from utils import b
**or**
To import only method
from utils.b import test
**or**
with alias name
from utils.b import test as my_test (my_test is the method alias name)
导入:
import folder.b as b b.test()
or from folder.b import test
or with alias name from folder.b import test as my_test
(my_test is the alias name)
如果您尝试 运行 的主文件在包内 (a.py),您应该切换到包含包的目录,并且 运行 文件使用 -m
我尝试导入 Python 模块但失败了。这是我的文件夹层次结构:
package/
folder/
a.py
utils/
b.py
在模块 a.py
中,我尝试导入 b.py
但收到 ImportError
.
如何使用模块 b
到 a.py
中的函数 test
?
文件:
a.py
def usetest():
test()
b.py
def test():
print("hello world")
可以使用几种不同的语法导入 Python 模块:
- 一个简单的
import ...
语句:import package.utils.b
现在可以让您使用package.utils.b.test()
。不幸的是它很长。 import ... as ...
语句:import package.utils.b as b
将让您使用b.test()
。- 一个
from ... import ...
语句:from package.utils.b import test
会让你使用test()
。 - 一个
from ... import ... as ...
语句:from package.utils.b import test as test_me
会让你使用test_me()
。
所有这些选项都将 运行 具有完全相同的功能。尝试将它们放在 a.py
.
指定整个路径,package.utils.b
称为绝对形式。也可以相对形式导入:
import ..utils.b as b
会让你使用b.test()
。注意开头的 2 个点,表示 上一个文件夹。from ..utils.b import test
会让你使用test()
.from ..utils.b import test as test_me
会让你使用test_me()
.
开头的每个点指定上一个文件夹,除了一个,上面写着“这个文件夹”。
如果您尝试 运行 的主文件在包内 (a.py
),您应该切换到包含包的目录,并且 运行 文件使用 -m
。在您的情况下,切换到包含 package
和 运行 python -m package.folder.a
.
有关导入模块的详细信息,请参阅 Python Docs。
您还可以使用完整路径动态导入 Python 模块。它更高级,不会在此答案中涵盖。
package/
folder/
a.py
utils/
b.py
进口:
如果包是您的主文件夹,则使用以下语法导入模块。
import utils.b as b
b.test()
**or**
from utils import b
**or**
To import only method
from utils.b import test
**or**
with alias name
from utils.b import test as my_test (my_test is the method alias name)
导入:
import folder.b as b b.test()
or from folder.b import test
or with alias name from folder.b import test as my_test
(my_test is the alias name)
如果您尝试 运行 的主文件在包内 (a.py),您应该切换到包含包的目录,并且 运行 文件使用 -m