我正在运行 Debian wheezy 并从系统包安装了 mitmproxy,并使用 pip 安装了 pushbullet.py ( https://github.com/randomchars/pushbullet.py ),即。
apt-get install mitmproxy
pip install pushbullet.py
当我从 python cmdline 导入时,Pushbullet 有效,如下所示:
$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pushbullet import PushBullet
>>> pb=PushBullet(myapikeyremoved)
>>>
但是,当我尝试从 mitmproxy 脚本中导入 pushbullet 模块时,它无法找到该模块。
$ echo "from pushbullet import PushBullet" > mypb.py
$ mitmproxy -s mypb.py
Script load error: Traceback (most recent call last):
File "/usr/lib/python2.6/dist-packages/libmproxy/script.py", line 48, in load
execfile(path, ns, ns)
File "mypb.py", line 1, in <module>
from pushbullet import PushBullet
ImportError: No module named pushbullet
现在,pip 已将 pushbullet.py 及其依赖项 python-magic、requests、backports.ssl-match-hostname 安装到 /usr/local/lib/python2.7/dist-packages/ 中。似乎 cmdline python 已经找到了 pip 安装的包,但 mitmproxy 由于某种原因无法找到。
因此,我尝试通过 PYTHONPATH 或通过系统路径添加路径,但我认为我仍然做错了什么。
$ cat mypb.py
import sys
sys.path.append('/usr/local/lib/python2.7/dist-packages')
from pushbullet import PushBullet
pb=PushBullet(myapikeyremoved)
$ mitmproxy -s mypb.py
Script load error: Traceback (most recent call last):
File "/usr/lib/python2.6/dist-packages/libmproxy/script.py", line 48, in load execfile(path, ns, ns)
File "mypb.py", line 4, in <module>
pb=PushBullet(myapikeyremoved)
File "/usr/local/lib/python2.7/dist-packages/pushbullet/pushbullet.py", line 26, in __init__
self.refresh()
File "/usr/local/lib/python2.7/dist-packages/pushbullet/pushbullet.py", line 223, in refresh
self._load_devices()
File "/usr/local/lib/python2.7/dist-packages/pushbullet/pushbullet.py", line 32, in _load_devices
resp_dict = resp.json()
TypeError: 'dict' object is not callable
任何人都可以阐明为什么一切都可以通过 cmdline python 运行,并且在从 mitmproxy 中作为脚本加载时失败,以及如何解决它?通过 pip 安装的模块应该如何加载?