这就是情况。我正在使用 Python 3.6
我目前有下一个文件夹组织:
/MainProject
__init__.py
/Folder1
pyscript1.py
pyscript2.py
__init__.py
/Folder2
pyscript3.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
所以,我试图从 pyscript3 获取一个存在于 pyscript1.py 中的函数。我还在每个级别添加了一个init .py。在 pyscript3.py 中,我尝试了以下操作:
from . import Folder1
Run Code Online (Sandbox Code Playgroud)
给出错误:
ImportError: cannot import name 'Folder1'
Run Code Online (Sandbox Code Playgroud)
我也试过:
from .Utils import script1
Run Code Online (Sandbox Code Playgroud)
给出错误:
ModuleNotFoundError: No module named '__main__.Utils'; '__main__' is not a
package
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过以下方式使用 sys 和 os 解决它:
sys.path.append(os.path.realpath('../..'))
Run Code Online (Sandbox Code Playgroud)
但我想知道不使用 sys.path 是否可行。
请注意,这Folder1
是一个目录,.py
脚本是您的模块。
在pyscript3
你应该能够去:
from Folder1 import pyscript1
Run Code Online (Sandbox Code Playgroud)
然后您可以访问名称methodname
如下的方法:
pyscript1.methodname()
Run Code Online (Sandbox Code Playgroud)
否则,您可以直接导入该方法,例如:
from Folder1.pyscript1 import methodname
Run Code Online (Sandbox Code Playgroud)
并使用它:
methodname()
Run Code Online (Sandbox Code Playgroud)
编辑:
为了让您的程序看到Folder1
和Folder2
,您需要从MainProject
文件夹中运行您的程序。
移动pyscript3
到您的MainFolder
或编写另一个脚本,让我们调用它main.py
,并调用必要的代码来实例化类/调用您想要的函数pyscript3.py
。
总而言之,您总是希望从项目的基本文件夹中运行入口模块。
归档时间: |
|
查看次数: |
9686 次 |
最近记录: |