OSError:[Errno 2]运行systrace.py时没有这样的文件或目录

时间:2013-09-24 16:35:25

标签: android python systrace

我目前正在尝试运行platform-tools文件夹中包含的systrace python脚本,我收到以下错误:

File "systrace.py", line 274, in <module>
 main()
File "systrace.py", line 60, in main
 device_sdk_version = get_device_sdk_version()
File "systrace.py", line 44, in get_device_sdk_version
 stderr=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
 errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
 raise child_exception
OSError: [Errno 2] No such file or directory

我在Ubuntu 12.04 LTS上运行。这是我用来运行systrace的命令:

sudo python systrace.py -o output.html

注意:sudo是为了避免以下错误:

File "systrace.py", line 274, in <module>
 main()
File "systrace.py", line 63, in main
 os.execv(legacy_script, sys.argv)
OSError: [Errno 13] Permission denied

在网上搜索后,我发现一个解决方案就是将adb添加到我的PATH变量中。我将platform-tools目录添加到我的PATH中,但我仍然遇到同样的错误。我继续检查导致问题的代码,显然是它的代码片段:

adb = subprocess.Popen(getprop_args, stdout=subprocess.PIPE,
                     stderr=subprocess.PIPE)

其中getprop_args的定义如下:

getprop_args = ['adb', 'shell', 'getprop', 'ro.build.version.sdk']

据我所知,代码试图运行以下命令:

adb shell getprop ro.build.version.sdk

我在控制台中运行命令,它没有问题。我还复制了两行代码并在python解释器中运行它们并且运行没有问题。我真的不知道如何解决这个问题。有谁知道可能的解决方案?

2 个答案:

答案 0 :(得分:1)

好的,我发现了问题所在。问题是sudo我在python systrace.py -o output.html我不知道之前正好问题,但我猜PATH变量在使用sudo时比不使用它时有所不同。因此PATH中的sudo没有platform-tools目录。所以我删除了sudo,我收到了以下错误:

File "systrace.py", line 274, in <module>
 main()
File "systrace.py", line 63, in main
 os.execv(legacy_script, sys.argv)
OSError: [Errno 13] Permission denied

为了解决这个问题,我在legacy_script上运行了以下命令:

$chmod +x ./systrace-legacy.py

现在我能够毫无问题地运行systrace脚本:P

答案 1 :(得分:0)

此问题是由PATH引起的。 adb路径应该放在另一条路径的末尾。

例如:

  

$ sudo gedit / etc / environment;

     

PATH =&#34; ...:〜/ softAddr / ADT-束-Linux的x86_64-20140624 / SDK /平台的工具:〜/ softAddr / ADT-束-Linux的x86_64-20140624 / SDK /工具及#34;

  

PATH =&#34;〜/ softAddr / ADT-束-Linux的x86_64-20140624 / SDK /平台的工具:〜/ softAddr / ADT-束-Linux的x86_64-20140624 / SDK /工具:... &#34;