Я запускаю Debian wheezy и установил mitmproxy из системных пакетов и pushbullet.py (https://github.com/randomchars/pushbullet.py) с помощью pip, т.е.Debian mitmproxy не может найти/загрузить модули python-2.7, установленные через pip
apt-get install mitmproxy
pip install pushbullet.py
Pushbullet работает, когда я импортировать из питона CmdLine, например, так:
$ 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)
>>>
Однако, когда я пытаюсь импортировать модуль pushbullet изнутри mitmproxy сценария, он не может найти модуль.
$ 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
Теперь, пип установил pushbullet.py и его зависимости питон-магию, запросы, backports.ssl-матч-имя хост в /usr/local/lib/python2.7/dist-packages/. Похоже, что python cmdline нашел пакеты с установленным пакетом, но 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
Может кто-нибудь пролить свет на то, почему все работает через командная_строка питона и не при загрузке в качестве сценария внутри mitmproxy, и как это исправить? Как загружать модули, установленные через pip?
Что делает 'which -a python' output –
Почему вы пытаетесь импортировать пакеты из другой версии python, чем работает ваш скрипт? И самое главное, почему вы установили python 2.7 в/usr/local? Debian wheezy поставляется с python 2.7 https://packages.debian.org/de/wheezy/python –
который -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 –