首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Python中的子文件夹导入

从Python中的子文件夹导入
EN

Stack Overflow用户
提问于 2018-07-12 07:19:20
回答 2查看 11.3K关注 0票数 5

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

我现在有下一个文件夹组织:

代码语言:javascript
复制
/MainProject
  __init__.py
    /Folder1
      pyscript1.py
      pyscript2.py
      __init__.py
    /Folder2
      pyscript3.py
      __init__.py

因此,我试图从pyscript3获取一个存在于pyscript1.py中的函数。我还在每个级别添加了一个init.py。在pyscript3.py中,我尝试了以下操作:

代码语言:javascript
复制
from . import Folder1

给出错误:

代码语言:javascript
复制
ImportError: cannot import name 'Folder1'

我也试过了:

代码语言:javascript
复制
from .Utils import script1

给出错误:

代码语言:javascript
复制
ModuleNotFoundError: No module named '__main__.Utils'; '__main__' is not a 
package

我知道我可以通过以下方式使用sys和os解决这个问题:

代码语言:javascript
复制
sys.path.append(os.path.realpath('../..'))

但我想知道,如果不使用sys,这是否可能。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-12 08:11:37

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

pyscript3中,您应该能够执行以下操作:

代码语言:javascript
复制
from Folder1 import pyscript1

然后,您可以访问名为methodname的方法,如下所示:

代码语言:javascript
复制
pyscript1.methodname()

否则,您可以直接导入方法,如下所示:

代码语言:javascript
复制
from Folder1.pyscript1 import methodname

并像这样使用它:

代码语言:javascript
复制
methodname()

编辑:

为了让您的程序能够看到Folder1Folder2,您需要从MainProject文件夹中运行程序。

要么将pyscript3移到您的MainFolder中,要么编写另一个脚本,让我们称其为main.py,并调用必要的代码来实例化该类/在pyscript3.py中调用所需的函数。

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

票数 6
EN

Stack Overflow用户

发布于 2018-07-12 07:31:55

您可以在pyscript3.py中使用from ..Folder1 import pyscript1,但您必须从父模块或在本例中为MainProject加载pyscript3。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51295385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档