情况就是这样。我使用的是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'
我也试过了:
from .Utils import script1
给出错误:
ModuleNotFoundError: No module named '__main__.Utils'; '__main__' is not a
package
我知道我可以通过以下方式使用sys和os解决这个问题:
sys.path.append(os.path.realpath('../..'))
但我想知道,如果不使用sys,这是否可能。
发布于 2018-07-12 08:11:37
请注意,Folder1
是一个目录,.py
脚本是您的模块。
在pyscript3
中,您应该能够执行以下操作:
from Folder1 import pyscript1
然后,您可以访问名为methodname
的方法,如下所示:
pyscript1.methodname()
否则,您可以直接导入方法,如下所示:
from Folder1.pyscript1 import methodname
并像这样使用它:
methodname()
编辑:
为了让您的程序能够看到Folder1
和Folder2
,您需要从MainProject
文件夹中运行程序。
要么将pyscript3
移到您的MainFolder
中,要么编写另一个脚本,让我们称其为main.py
,并调用必要的代码来实例化该类/在pyscript3.py
中调用所需的函数。
总而言之,您总是希望从项目的基文件夹中运行entry模块。
发布于 2018-07-12 07:31:55
您可以在pyscript3.py中使用from ..Folder1 import pyscript1
,但您必须从父模块或在本例中为MainProject加载pyscript3。
https://stackoverflow.com/questions/51295385
复制相似问题