从另一个文件夹失败蟒蛇进口(Fail python import from another fold

2019-09-19 11:32发布

我与蟒蛇进行试验,主要是排查其他人的代码。 我试图让一个程序运行,“ path\folderA\program.py ”。

我正在从程序path\folderA

我得到一个错误:

ImportError: No module named fff.ggg.ppp

program.py包含进口:

from fff.ggg.ppp import mmm

在文件夹“路径\ FolderB中”有: “ path\folderB\fff\__init__.py ” “ path\folderB\fff\ggg

文件夹ggg还包含__init__.py ,以及节目ppp.py

从阅读其他职位,如Python的错误“导入错误:没有模块名为”我的理解是具有__init__.py使一个文件夹中的“包”,这使得进口成为可能-但它不工作,因为我得到一个错误。

该公司一直致力于与这些项目的经验其他人,所以有什么毛病我的设置。

我读了一些关于其是在sys.path中的目录。 这是否意味着我必须将它们添加到环境变量的路径? 这将意味着加入了大量的目录路径的,因此它不能。

所以,我也发现了以下几点:

import sys
sys.path.append( <path to FolderB> )

但是,这意味着改变代码(这还没有必要为别人)和硬编码到它是我的本地机器上的一个路径 - 我不应该有吧?

我无法想象它 - 显然我不应该更改代码和硬编码到导入模块的物理路径 - 所以如何从folderA程序甚至不知道在FolderB中寻找一个进口?

如何神奇的__init__.py工作?

Answer 1:

我无法想象它 - 显然我不应该更改代码和硬编码到导入模块的物理路径 - 所以如何从folderA程序甚至不知道在FolderB中寻找一个进口?

你是对的。 不管怎样,你必须告诉Python寻找在FolderB中导入的模块。 没有__init__.py魔力,可以让你从其他文件夹导入您的硬盘上。

通常情况下,如果你有各种不同的Python包一样,他们通过被安装到Python的库工作。 这样,他们可以从任何地方进口。 这通常是通过完成setup.py脚本。 检查folderB有一个。 与运行它python setup.py install

如果不行,我们需要这个代码是如何组织的更多信息。



Answer 2:

文件夹B必须在sys.path中,所以你要么需要MMM移动到,或从内的(不知道是否可行)修改的sys.path。 __init__.py告诉Python的文件夹是一个包,让你可以有文件夹__init__.py与文件夹中的__init__.py和python对待的文件夹里面的父文件夹的部分。 退房sym​​py或几乎所有的大型Python库,你会发现这样的结构。 它也可以包含代码作为导入运行,但也可以是空的。



文章来源: Fail python import from another folder
标签: python import