2012-06-23 137 views
1

當我試圖在Eclipse(的PyDev)運行該腳本如下:返回導入錯誤:無法導入名稱urandom的在Eclipse/PyDev的

import subprocess 
subprocess.call("/usr/local/bin/mitmdump") 

錯誤:

Traceback (most recent call last): 
    File "/usr/local/bin/mitmdump", line 19, in <module> 
    from libmproxy import proxy, dump, cmdline 
    File "/Library/Python/2.7/site-packages/libmproxy/proxy.py", line 22, in <module> 
    import shutil, tempfile, threading 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tempfile.py", line 34, in <module> 
    from random import Random as _Random 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py", line 47, in <module> 
    from os import urandom as _urandom 
ImportError: cannot import name urandom 

如果我運行相同的腳本從bash,它工作正常。是什麼賦予了?

$ python 
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import subprocess 
>>> subprocess.call("/usr/local/bin/mitmdump") 
127.0.0.1 GET http://google.com/ 

似乎有一個與Ubuntu Python ImportError cannot import urandom Since Ubuntu 12.04 upgrade相關的問題,但我的環境是OSX。

+0

檢查您的PYTHONPATH。 – Daenyth

+0

您是否在'virtualenv'下運行該項目? – drudru

回答

2

正確診斷是,請執行下列操作:

編輯在/ usr/local/bin目錄/ mitmdump,並使:

try: 
    from libmproxy import proxy, dump, cmdline 
except ImportError: 
    import sys 
    print 'Executable:', sys.executable 
    print '\n'.join(sorted(sys.path)) 
    raise 

,然後檢查你看到的其實是你預計...(你可以在命令行中執行那些相同的打印,以便在不引發異常時檢查它們之間的區別,然後可能更新Eclipse/PyDev中的PYTHONPATH)。

+0

我不確定我完全理解。我是python的新手。當我編輯mitmdump時,是否在開始時插入此嘗試,然後從Eclipse中運行它? – SpaceMonkey

+0

是的,然後比較你從命令行得到的結果。 –

+0

所以不是從sub.process運行mitmdump,而是直接調用libmproxy。它正在工作。謝謝! – SpaceMonkey

0

我會想象你的Python路徑是正確的網絡設置。如果是這樣,python無法找到模型,因此無法導入。

+0

我試着將所有文件夾添加到Eclipse中的PYTHONPATH中,但沒有運氣。如果我運行諸如 subprocess.call(「ls」)它可以正常工作。 – SpaceMonkey

+0

從控制檯中,我使用>>> import sys >>> from pprint import pprint as pp >>> pp(sys.path)來檢查正在使用哪些PYTHONPATH。我把所有這些目錄都加入到了Eclipse/PyDev的PYTHONPATH中。重新啓動Eclipse。問題依然存在。 – SpaceMonkey

相關問題