簡體   English   中英

Debian mitmproxy無法找到/加載通過pip安裝的python-2.7模塊

[英]Debian mitmproxy fails to find/load python-2.7 modules installed via pip

我正在運行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,請求,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安裝的模塊?

感謝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'對象不可調用”錯誤,也是因為pushbullet依賴python 2.7的某些功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM