情况是这样的。我正在使用 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 的情况下这是否可行。
最佳答案
请注意,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
中类/调用您想要的函数。
总而言之,您总是希望从项目的基本文件夹运行入口模块。
关于python - 从 Python 中的子文件夹导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51295385/