导入相对于当前脚本的共享python脚本的最简单方法

时间:2012-01-12 10:03:41

标签: python import

我正在尝试从另一个导入一个python脚本。我在一个脚本中定义了一些常用函数,然后是许多其他想要导入这些函数的脚本。没有课程,只有功能。

导入脚本需要从相对路径导入,例如../../SharedScripts/python/common.py

然后我定义了一些我将调用的函数def f1(...)

我发现imp模块似乎是正确的用法,但我无法弄清楚对我的例子有用的确切语法。

如果imp不是正确的模块,有人可以建议使用正确的代码或最简单的方法吗?

解决方案从下面的答案我能够让这个工作......

projectKey = 'THOR'

# load the shared script relative to this script
sys.path.append(os.path.dirname(__file__) + '/../../SharedScripts/python')
import jira

jira.CheckJiraCommitMessage(sys.argv[1], sys.argv[2], projectKey)

我在__init__.py目录中有一个空的jira.py和一个SharedScripts/python,其中包含普通的函数定义。

2 个答案:

答案 0 :(得分:1)

可能的方法是在导入之前将目录添加到Python路径。

#!/usr/bin/env python
import sys
sys.path.append('../../SharedScripts/python')
import common

答案 1 :(得分:1)

为什么不将../../SharedScripts/python/添加到python路径?然后你可以像任何其他模块一样使用common.py

import common
common.f1()

您可以通过系统变量PYTHONPATH替换Python路径,也可以直接从python中操作它:sys.path.append("../../SharedScripts/python/")

请注意,使用绝对路径可能更明智...(应用的当前目录可能会更改)

要获得绝对路径,可以调用函数os.path.abspathos.path.abspath('../../SharedScripts/python/')