2016-12-12 12 views
1

Я прочитал много сообщений о SO относительно использования Pillow или Image вместо PIL, но у меня все еще возникают проблемы с этим модулем.Невозможно импортировать модуль в python 2.7, хотя pip говорит, что он установлен

Я запускаю это на своем MBP 10.9.5.

Я использовал пип для установки изображения 1.5.5 и подушки 3.4.2. Однако, когда я иду импортировать модуль в свой скрипт, он продолжает говорить, что нет модуля этого имени.

[email protected]:/usr/local/bin> pip freeze | grep Pillow 
Pillow==3.4.2 
[email protected]:/usr/local/bin> pip freeze | grep image 
image==1.5.5 
[email protected]:/usr/local/bin> which pip 
/usr/local/bin/pip 
[email protected]:/usr/local/bin> which python 
/usr/local/bin/python 

Python 2.7.10 (v2.7.10:15c95b7d81dc, May 23 2015, 09:33:12) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import image 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named image 
>>> import PIL 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named PIL 
>>> import Pillow 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named Pillow 
>>> import pillow 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named pillow 

Я проверил /Library/Python/2.7/site-packages и это не похоже на .py файлов есть для подушки или изображений, даже если пип замораживание показало, что изображение и подушка оба установлены.

Это содержание пипса это. Не уверен, дает ли он подсказку, почему pip считает, что модули установлены, но python говорит, что не может его найти.

#!/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python 
    # EASY-INSTALL-ENTRY-SCRIPT: 'pip==9.0.1','console_scripts','pip' 
    __requires__ = 'pip==9.0.1' 
    import sys 
    from pkg_resources import load_entry_point 

    if __name__ == '__main__': 
     sys.exit(
      load_entry_point('pip==9.0.1', 'console_scripts', 'pip')() 
     ) 

Из того, что я показал в своей настройке/окружении, может ли кто-нибудь указать мне в общем направлении, чтобы начать исправление этой проблемы? Есть ли дополнительная информация, необходимая для отладки этого еще?

+1

Есть ли только одна версия python, работающая на коробке? – roymustang86

+0

@ roymustang86, есть один в/usr/local/bin и версия «запаса» в/usr/bin /, но, как я показал, пип и питон, который я запускаю, оба находятся из местоположения/usr/local/bin – Classified

ответ

1

Поскольку вы работаете за пределами virtualenv, пользовательский сайт должен быть включен. Используйте следующие команды, чтобы найти установленное расположение изображения и/или подушку:

pip show -f image | grep Location 
pip show -f pillow | grep Location 

То, что вы, вероятно, хотите, чтобы увидеть что-то вроде:

Location: /Users/<your_username>/.local/lib/python2.7/site-packages 

Если не устанавливать там, затем удалите и пип снова установите флаг --user.

Затем используйте следующую команду, чтобы убедиться, что результаты выше, будут найдены в вашем пути:

python -m site 

Что вы хотите увидеть на выходе что-то вроде

sys.path = [ 
    ... 
] 
USER_BASE: '/Users/<your_username>/.local' (exists) 
USER_SITE: '/Users/<your_username>/.local/lib/python2.7/site-packages' (exists) 
ENABLE_USER_SITE: True 

If установленное местоположение находится на вашем сайте пользователя, а ваш пользовательский сайт включен, тогда импорт будет работать.

+0

спасибо за подсказку. Я думаю, что это разрешает тайну на полпути. Большинство моих старых модулей были установлены в /Library/Python/2.7/site-packages из-за pip 8.x.x. Подушка и изображение оба установлены на /usr/local/lib/python2.7/site-packages. Я думаю, что для этой проблемы я попытался обновить pip от 8.xx до 9.0.1, потому что одна из SO-ссылок указала на использование pip 9. Как мне сделать Location/Library/Python/2.7/site-packages для теперь, когда установка 9.0.1 изменила значение «Местоположение»? – Classified