相对当前脚本引入共享Python脚本的最简单方法
我想从一个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)
我在 SharedScripts/python
目录里有一个空的 __init__.py
文件和一个 jira.py
文件,里面都是简单的函数定义。
2 个回答
1
一种可能的方法是在导入之前,把这个目录添加到Python的路径中。
#!/usr/bin/env python
import sys
sys.path.append('../../SharedScripts/python')
import common
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/')