正在从根文件夹导入 python 个模块
Importing python modules from root folder
我正在使用 python 2.7 并具有以下项目结构
main-folder
--folder1
- script.py
--folder2
- scr.py
-- abc.py
-- util.py
我正在尝试使用
将abc.py导入util.py
from main-folder import abc
但我没有收到如下错误
ImportError: No module named main-folder
我还尝试将主文件夹的路径附加到使用
的路径
sys.path.append(r'path/to main-folder/main-folder')
我也有 init.py 在主文件夹,folder1 和 folder2
我假设你的包实际上没有被调用 main-folder
因为这是一个语法错误。
sys.path
/ PYTHONPATH
是 Python 查找 模块的地方,因此将文件夹添加到 sys.path 意味着 在中它可以导入(作为顶级模块),它不会使文件夹本身可导入
- 当您 运行 脚本作为 Python 文件时,Python 添加 该文件的文件夹 在 PYTHONPATH 中,例如在这里,如果你 运行 main-folder/folder1/script.py,
main-folder/folder1
是你的 PYTHONPATH 上的内容,显然无论你如何切片它都无法访问 abc 或 utils
import <foo>
或 from <foo> import <bar>
是一个 绝对导入 ,它从 PYTHONPATH[0] 开始搜索
- 您可以在命令行中指定 PYTHONPATH,例如
PYTHONPATH=. python main-folder/folder1/script.py will *also* add whatever
.` 是你的 PYTHONPATH,这可能是你想要的?
- 在一个包中(一个包含
__init__
和一堆子模块的目录),使用相对导入可能更好,例如util
应该使用 from . import abc
如果它们应该是同一包的同级子模块
[0] 对于 Python 2 实际上并非如此,因为 PEP 328 必须保持旧的行为有效,但您可能想要假设它无论如何,您可以“选择退出”使用 PEP
中列出的 __future__
节的旧行为
我正在使用 python 2.7 并具有以下项目结构
main-folder
--folder1
- script.py
--folder2
- scr.py
-- abc.py
-- util.py
我正在尝试使用
将abc.py导入util.pyfrom main-folder import abc
但我没有收到如下错误
ImportError: No module named main-folder
我还尝试将主文件夹的路径附加到使用
的路径sys.path.append(r'path/to main-folder/main-folder')
我也有 init.py 在主文件夹,folder1 和 folder2
我假设你的包实际上没有被调用 main-folder
因为这是一个语法错误。
sys.path
/PYTHONPATH
是 Python 查找 模块的地方,因此将文件夹添加到 sys.path 意味着 在中它可以导入(作为顶级模块),它不会使文件夹本身可导入- 当您 运行 脚本作为 Python 文件时,Python 添加 该文件的文件夹 在 PYTHONPATH 中,例如在这里,如果你 运行 main-folder/folder1/script.py,
main-folder/folder1
是你的 PYTHONPATH 上的内容,显然无论你如何切片它都无法访问 abc 或 utils import <foo>
或from <foo> import <bar>
是一个 绝对导入 ,它从 PYTHONPATH[0] 开始搜索
- 您可以在命令行中指定 PYTHONPATH,例如
PYTHONPATH=. python main-folder/folder1/script.py will *also* add whatever
.` 是你的 PYTHONPATH,这可能是你想要的? - 在一个包中(一个包含
__init__
和一堆子模块的目录),使用相对导入可能更好,例如util
应该使用from . import abc
如果它们应该是同一包的同级子模块
[0] 对于 Python 2 实际上并非如此,因为 PEP 328 必须保持旧的行为有效,但您可能想要假设它无论如何,您可以“选择退出”使用 PEP
中列出的__future__
节的旧行为