从Python中的子文件夹导入

从Python中的子文件夹导入,python,import,Python,Import,情况就是这样。我正在使用Python 3.6 我当前有下一个文件夹组织: /MainProject __init__.py /Folder1 pyscript1.py pyscript2.py __init__.py /Folder2 pyscript3.py __init__.py 因此,我试图从pyscript3获取pyscript1.py中存在的函数。我还在每个级别添加了一个init.py。在pyscript

情况就是这样。我正在使用Python 3.6

我当前有下一个文件夹组织:

/MainProject
  __init__.py
    /Folder1
      pyscript1.py
      pyscript2.py
      __init__.py
    /Folder2
      pyscript3.py
      __init__.py
因此,我试图从pyscript3获取pyscript1.py中存在的函数。我还在每个级别添加了一个init.py。在pyscript3.py中,我尝试了以下方法:

from . import Folder1
给出错误:

ImportError: cannot import name 'Folder1'
ModuleNotFoundError: No module named '__main__.Utils'; '__main__' is not a 
package
我也试过:

from .Utils import script1
给出错误:

ImportError: cannot import name 'Folder1'
ModuleNotFoundError: No module named '__main__.Utils'; '__main__' is not a 
package
我知道我可以通过以下方式使用sys和os解决它:

sys.path.append(os.path.realpath('../..'))
但我想知道,如果不使用sys,这是否可行。

您可以使用
from..Folder1导入pyscript1
在pyscript3.py中
但是您必须从父模块或main项目中加载pyscript3。

注意,
Folder1
是一个目录,
.py
脚本是您的模块

pyscript3
中,您应该能够:

from Folder1 import pyscript1
然后可以访问名为
methodname
的方法,如:

pyscript1.methodname()
否则,您可以直接导入方法,如下所示:

from Folder1.pyscript1 import methodname
然后像这样使用它:

methodname()
编辑:

要让程序查看
Folder1
Folder2
,需要从
MainProject
文件夹运行程序

要么将
pyscript3
移动到您的
main文件夹
,要么编写另一个脚本,让我们调用它
main.py
,并调用必要的代码来实例化类/调用您想要在
pyscript3.py
中使用的函数


总而言之,您总是希望从项目的基本文件夹运行entry模块。

这是两个级别以上的模块,不起作用,而且我无法从父模块加载pyscript3,如果我使用..Folder1,则会给出:ValueError:尝试在顶级包之外进行相对导入这是我评论的问题,I Get ModuleNotFoundError:没有名为“Folder1”的模块您无法导入Folder1,但可以从Folder1导入脚本。您是否可以展开主项目文件夹?入口点在哪里?我正在尝试从pyscript3到pyscript1,入口点应该是pyscript3。能否显示main.py或等效文件?大概它在MainProject文件夹中?还有,你是如何运行你的程序的?简单地
python main.py