1

当我尝试在 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似乎有一个相关的问题,因为Ubuntu 12.04升级但我的环境是OSX。

4

3 回答 3

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 中更新你的 PYTHONPATH /PyDev)。

于 2012-06-25T10:57:59.423 回答
2

我有相同的症状,但在 Mac OS X 的命令行上的 python 中。在这里找到了答案:Python: cannot import urandom module (OS X)

不确定这是否与您遇到的问题相同或如何hash -r从 Eclipse 调用。

于 2012-10-29T06:25:07.217 回答
0

我想你的 python 路径是正确设置的。如果是这样,python 找不到模型,因此无法导入。

于 2012-06-24T04:08:29.467 回答