Python 3.4 从另一个目录导入一个 util class
Python 3.4 importing a util class from another directory
我的文件夹结构如下,我想将 Util1.py 中的 class 导入到 Impl1.py 中,但不知道如何编写导入函数。我已经看到 PYTHONPATH 的提及,但无法完全弄清楚如何围绕它编写细节。感谢任何帮助
根文件夹
|---实用工具
|---源码
|--Util1.py
|--Util2.py
|---实现1
|---源码
|--Impl1.py
|--Impl2.py
一些信息 - 我正在使用 Python3.4。请让我知道我可以提供哪些其他信息来帮助你们回答我的问题
处理此问题的正确方法是将项目结构化为包,然后使用相对导入。 (这里有很多关于如何做到这一点的问题,例如:[1], [2]。
如果您无法重构代码,可能需要的 kludge 方法是将包含您的 "other" 代码的目录动态添加到您的 PATH。
例如,假设您在 Impl1.py
内并且想在 Util1.py
内调用 foo
函数,您可以这样做:
# 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()
您可以使用相对导入,例如
例如,要将 Util1.py 中的 class 'foo' 导入到 Impl1 中,您可以在 Impl1.py
中编写
from ../../Util/Src/Util1 import foo
进一步阅读:
我的文件夹结构如下,我想将 Util1.py 中的 class 导入到 Impl1.py 中,但不知道如何编写导入函数。我已经看到 PYTHONPATH 的提及,但无法完全弄清楚如何围绕它编写细节。感谢任何帮助
根文件夹 |---实用工具 |---源码 |--Util1.py |--Util2.py |---实现1 |---源码 |--Impl1.py |--Impl2.py
一些信息 - 我正在使用 Python3.4。请让我知道我可以提供哪些其他信息来帮助你们回答我的问题
处理此问题的正确方法是将项目结构化为包,然后使用相对导入。 (这里有很多关于如何做到这一点的问题,例如:[1], [2]。
如果您无法重构代码,可能需要的 kludge 方法是将包含您的 "other" 代码的目录动态添加到您的 PATH。
例如,假设您在 Impl1.py
内并且想在 Util1.py
内调用 foo
函数,您可以这样做:
# 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()
您可以使用相对导入,例如
例如,要将 Util1.py 中的 class 'foo' 导入到 Impl1 中,您可以在 Impl1.py
中编写from ../../Util/Src/Util1 import foo
进一步阅读: