【发布时间】:2014-11-09 12:12:33
【问题描述】:
我正在运行 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安装的模块应该如何加载?
【问题讨论】:
-
which -a python输出什么 -
为什么您尝试从与您的脚本运行的不同 python 版本导入包?最重要的是,你为什么将 python 2.7 安装到 /usr/local? Debian wheezy 自带 python 2.7 packages.debian.org/de/wheezy/python
-
which -a python => /usr/bin/python.是的,我正在运行 python 2.7.3(来自上面的 cmdline 输出)。准确地说,2.7.3-4+deb7。不知道你从哪里得到我将 python 2.7 安装到 /usr/local 的想法。 debian mitmproxy 将安装文件打包到 /usr/lib/python2.6/dist-packages/libmproxy 和 /usr/lib/python2.7/dist-packages/libmproxy。是 pip 将 pushbullet 和依赖项安装到 /usr/local
标签: python python-2.7 debian python-2.6 mitmproxy