这种情况。我正在使用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的情况下是否有可能。
答案 0 :(得分:1)
请注意,Folder1
是目录,.py
脚本是您的模块。
在pyscript3
中,您应该可以:
from Folder1 import pyscript1
然后,您可以访问名称为methodname
的方法,例如:
pyscript1.methodname()
否则,您可以直接导入该方法,例如:
from Folder1.pyscript1 import methodname
并像这样使用它:
methodname()
编辑:
要让您的程序看到Folder1
和Folder2
,您需要从MainProject
文件夹中运行程序。
将pyscript3
移至MainFolder
或编写另一个脚本,我们将其称为main.py
,然后调用必要的代码以实例化类/在{{1 }}。
总而言之,您始终希望从项目的基本文件夹中运行入口模块。
答案 1 :(得分:0)
您可以使用
from ..Folder1 import pyscript1
在pyscript3.py中
但是您必须从父模块或在MainProject中加载pyscript3。