Debian mitmproxy无法找到/加载通过pip安装的python2.7模块

2024-10-04 03:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行DebianWheezy,并从系统包中安装了mitmproxy,并且按钮.py(https://github.com/randomchars/pushbullet.py)使用pip,即

apt-get install mitmproxy
pip install pushbullet.py

从python cmdline导入时Pushbullet有效,如下所示:

^{pr2}$

但是,当我试图从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安装了按钮.py以及它的依赖性python magic,请求,后台端口.ssl-将主机名匹配到/usr/local/lib/python2.7/dist packages/。似乎cmdline python已经找到pip安装的包,但是mitmproxy由于某种原因无法找到。在

所以,我尝试通过PYTHONPATH或通过system path添加路径,但我认为我一定是做错了什么。在

$ 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安装的模块?在


Tags: pipinpylibpackagesusrlocaldist
1条回答
网友
1楼 · 发布于 2024-10-04 03:27:12

感谢Christian Rapp的评论,我进一步研究了为什么要从/usr/lib/python2.6加载mitmproxy的libmproxy。结果是(至少在debian-wheezy包中),mitmproxy shebang显式地指定了python2.6:

$ head -1 /usr/bin/mitmproxy
#! /usr/bin/python2.6

这就解释了为什么mitmproxy找不到pushbullet模块,而是在2.6目录中查找。在

我想当我显式加载模块时出现“TypeError:'dict'object is not callable”错误也是因为pushbullet依赖于Python2.7的一些特性。在

相关问题 更多 >