2013-09-24 144 views
2

我正在嘗試運行包含在platform-tools文件夾中的systrace python腳本,並且出現以下錯誤:OSError:[Errno 2]運行systrace.py時沒有這樣的文件或目錄

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 

注:須藤是爲了避免以下錯誤:

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解釋器中運行它們,並且運行沒有問題。我真的不知道如何解決這個問題。有誰知道可能的解決方案?

回答

1

好吧,我發現問題是什麼。問題是我在python systrace.py -o output.html之前正好放置的sudo,我不知道,但我想PATH變量在使用sudo時比不使用時變得不同。因此,PATHsudo沒有platform-tools目錄。所以我刪除了須藤和我得到了以下錯誤:

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

+0

你也應該能夠沒有 「命令」 來運行它。感謝親愛的 – fadden

+0

,權限問題解決了我。 :) – CoDe

0

這個問題是由PATH引起的。 adb路徑應該放在另一個路徑的末尾。

例如:

$ sudo gedit /etc/environment;

PATH="...:~/softAddr/adt-bundle-linux-x86_64-20140624/sdk/platform-tools:~/softAddr/adt-bundle-linux-x86_64-20140624/sdk/tools"

不是:

PATH="~/softAddr/adt-bundle-linux-x86_64-20140624/sdk/platform-tools:~/softAddr/adt-bundle-linux-x86_64-20140624/sdk/tools:..."

相關問題