我正在尝试使用 python,主要是对其他人的代码进行故障排除。我试图让一个程序运行,“ path\folderA\program.py
”。
我正在运行程序path\folderA
我收到一个错误:
ImportError: No module named fff.ggg.ppp
program.py 包含一个导入:
from fff.ggg.ppp import mmm
在文件夹“path\folderB”中有:“ path\folderB\fff\__init__.py
”“ path\folderB\fff\ggg
”
文件夹ggg
还包含 __init__.py
,以及程序ppp.py
通过阅读其他帖子,例如Python 错误“ImportError: No module named”,我了解到__init__.py
让文件夹成为“包”,这使得从中导入成为可能 - 但它不起作用,因为我收到错误。
这一直适用于与这些项目合作的其他人,所以我的设置有问题。
我读了一些关于必须在 sys.path 中的目录。这是否意味着我必须将它们添加到环境变量路径中?这将意味着向 PATH 添加很多目录,所以它不可能。
所以我还发现了以下内容:
import sys
sys.path.append( <path to FolderB> )
但这意味着更改代码(对其他人来说不是必需的)并硬编码一条通往我本地机器上的路径 - 我不应该这样做,对吧?
我无法想象它 - 显然我不应该更改代码并硬编码导入模块的物理路径 - 那么来自 folderA 的程序怎么可能知道在 folderB 中查找导入?
魔法是如何__init__.py
运作的?