0

更新:按照@dtmilano 的建议,我添加了

import sys
print(sys.path)

到我的 MonkeyRunner 脚本的开头。这导致

['e:/path/android-sdk/tools/lib/monkeyrunner.jar:e:\\path\\bbct\\android\\functional-tests', 'E:\\path\\android-sdk\\tools\\lib\\Lib', '/E:/path/android-sdk/tools/lib/jython-standalone-2.5.3.jar/Lib', '__classpath__', '__pyclasspath__/']

乍一看,我认为这包括当前的工作目录。然而,仔细检查表明输出是一个字符串列表,其中第一个字符串是

'e:/path/android-sdk/tools/lib/monkeyrunner.jar:e:\\path\\bbct\\android\\functional-tests'

由于某种原因,这包含连接在一起的两条路径。这是 MonekyRunner 和/或 Jython 中的错误吗?

原始问题:我在同一目录中有两个 .py 文件:screenshots.pyutil.py. 我需要使用monkeyrunnerAndroid 构建工具中的解释器运行 screenshots.py。当我运行时monkeyrunner screenshots.py,我得到错误No module named util。如何配置我的 python 和/或 monkeyrunner 以在 中查找代码util.py

编辑: 我在 Win7 上使用 Git Bash。(糟糕,我可能应该早点提到这一点。)

作为参考,这是完整的错误消息:

130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] 脚本因异常而终止
130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]Traceback(最近最后调用):
文件“c:\Users\Dell\Documents\dev\src\java\bbct\android\functional-tests\screenshots.py”,第 19 行,在
import util
ImportError: No module named util

130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
at org.python.core.Py.ImportError(Py.java:264)
130807 12:01:59.978:S [main] [com .android.monkeyrunner.MonkeyRunnerOptions]
at org.python.core.imp.import_first(imp.java:657) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
at org.python.core .imp.import_name(imp.java:741) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
at org.python.core.imp.importName(imp.java:791) 130807 12 :01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
在 org.python.core.ImportFunction。调用(_内置_.java:1236) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
at org.python.core.PyObject。在 org.python.core调用(PyObject.java:367) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
org.python.core 的内置._ import _( builtin .java:1207) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
内置._导入_(内置.java:1190) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
在 org.python.core.imp.importOne(imp.java:802) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
在 org.python.pycode._pyx0.f$0(c :\Users\Dell\Documents\dev\src\java\bbct\android\functional-tests\screenshots.py:51) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
at org .python.pycode._pyx0.call_function(c:\Users\Dell\Documents\dev\src\java\bbct\android\functional-tests\screenshots.py) 130807 12:01:59.978:S [main] [com. android.monkeyrunner.MonkeyRunnerOptions]
at org.python.core.PyTableCode.call(PyTableCode.java:165) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
在 org.python.core.PyCode.call(PyCode.java:18) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
在 org.python.core.Py.runCode(Py. java:1197) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
at org.python.core。org.python.util.PythonInterpreter.execfile ( PythonInterpreter.java:156) 130807 12
01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
at com.android.monkeyrunner.ScriptRunner.run(ScriptRunner.java:116) 130807 12:01:59.978:S [main] [com.android. monkeyrunner.MonkeyRunnerOptions]
在 com.android.monkeyrunner.MonkeyRunnerStarter.run(MonkeyRunnerStarter.java:77) 130807 12:01:59.978:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]
在 com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.爪哇:189)

4

3 回答 3

1

您需要将模块添加到搜索路径(您是 cwd 不在同一个目录中?)

http://docs.python.org/2/tutorial/modules.html

import sys sys.path.append('/path/to/your/module')

于 2013-08-07T23:30:01.757 回答
1

脚本所在的目录sys.path由 by自动添加monkeyrunner(这对其他操作系统非常有效,不幸的是,您似乎正在使用它没有使用的目录)。然后可以毫无问题地导入脚本同一目录中存在的其他模块。

也就是说,screenshots.py应该找到utils.py,因为目录functional-testssys.path.

您可以通过执行验证其内容

import sys
print sys.path
import util

screenshots.py. 我的猜测是所有这些c:\都在弄乱路径。

于 2013-08-08T04:32:08.960 回答
1

供您参考,android SDK 似乎确实有一个错误,其中 sys.path 上的第一项是 monkeyRunner 库和工作目录混合在一起。我添加了以下内容来修复。

import sys
sys.path.append(sys.path[0].split(':',1)[1])
import util
于 2016-01-20T16:23:04.050 回答