我正在尝试从另一个导入一个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
,其中包含普通的函数定义。
答案 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.abspath
:os.path.abspath('../../SharedScripts/python/')