我正在使用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')
我在主文件夹,folder1和folder2中也有 init .py
答案 0 :(得分:1)
我认为您的软件包实际上没有被称为main-folder
,因为这是语法错误。
sys.path
/ PYTHONPATH
是Python 寻找模块的地方,因此将文件夹添加到sys.path意味着可以导入 中的内容(作为顶级模块),它不会使文件夹本身可导入main-folder/folder1
是PYTHONPATH上的内容,无论您如何对其进行切片,显然都无法访问abc或utils import <foo>
或from <foo> import <bar>
是绝对导入,它从PYTHONPATH [0] PYTHONPATH=. python main-folder/folder1/script.py will *also* add whatever
。`是您的PYTHONPATH,可能就是您想要的?util
应该是同一个程序包的同级子模块,则应使用from . import abc
[0]对于Python 2而言实际上不是正确的,因为PEP 328必须保持旧的行为正常运行,但是无论如何您都想假设它,可以通过使用PEP中列出的__future__
节