Python 3.4从另一个目录导入util类

时间:2015-03-17 05:55:03

标签: python import python-3.4 subdirectory

我有一个文件夹结构如下所示,我想从Util1.py导入一个类到Impl1.py但是无法弄清楚如何编写Import函数。我已经看到提到PYTHONPATH,但无法完全弄清楚如何编写它周围的细节。任何帮助表示赞赏

Root folder
 |---Util
     |---Src
         |--Util1.py
         |--Util2.py
 |---Impl1
     |---Src
         |--Impl1.py
         |--Impl2.py

一些信息 - 我使用的是Python3.4。请让我知道我可以提供哪些其他信息来帮助您帮助回答我的问题

2 个答案:

答案 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

进一步阅读:https://stackoverflow.com/a/12173406/2073920