我有一个文件夹结构如下所示,我想从Util1.py导入一个类到Impl1.py但是无法弄清楚如何编写Import函数。我已经看到提到PYTHONPATH,但无法完全弄清楚如何编写它周围的细节。任何帮助表示赞赏
Root folder |---Util |---Src |--Util1.py |--Util2.py |---Impl1 |---Src |--Impl1.py |--Impl2.py
一些信息 - 我使用的是Python3.4。请让我知道我可以提供哪些其他信息来帮助您帮助回答我的问题
答案 0 :(得分:1)
处理此问题的正确方法是将项目构建为包,然后使用相对导入。 (这里有很多关于如何执行此操作的问题,例如:[1],[2]。
如果无法重构代码,可能需要的kludge方法是将包含“其他”代码的目录动态添加到PATH中。
例如,假设您在Impl1.py
内并希望调用foo
内的Util1.py
函数,则可以执行以下操作:
# Get parent of parent
import os, sys
pp = os.path.realpath(__file__)
for _ in range(3): pp = os.path.dirname(pp)
# Add np to path
sys.path.append(os.path.join(pp, 'util', 'src'))
# Import file
import Util1
# Call function
Util1.foo()
答案 1 :(得分:0)
你可以使用相对导入,例如
例如,要导入一个课程' foo'从Util1.py到Impl1,你可以在Impl1.py
中写这个from ../../Util/Src/Util1 import foo