python / django - " не может использовать ImageField, потому что подушка не установлена"

я присоединяюсь к проекту, поэтому я хочу настроить окружающую среду, поэтому я сделал следующее:

pip install -r requirements.txt

это полностью установило все требования, включая django 1.7.0, Pillow 2.4.0 и некоторые другие.

затем я хочу построить базу данных :

python manage.py migrate

и бум, ошибка, я получаю следующее :

CommandError: System check identified some issues:

ERRORS:
stu.chan.icon: (fields.E210) Cannot use ImageField because Pillow is not installed.
    HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install pillow".
stu.chan.image: (fields.E210) Cannot use ImageField because Pillow is not installed.
    HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install pillow".
stu.Piec.icon: (fields.E210) Cannot use ImageField because Pillow is not installed.
    HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install pillow".

... как будто я не устанавливал подушку. Поэтому я проверил установленный пакет (с этой техника), и Pillow 2.4.0 IS установленный.

затем я также попытался принудительно переустановить:pip install --upgrade --force-reinstall Pillow==2.4.0

но ничего не делать я получаю ту же ошибку при запуске migrate.

я использую python 3.4.0 и django 1.7.0 на mac OS X 10.6.7, завернутый в virtualenv 1.11.6 С понижением pip до pip 1.2.1 (из-за некоторых хорошо известных, но еще не полностью разрешенных и не понятых вопрос С pip и ssl).

весь приведенный выше код находится в virtualenv (bin/activate сделано).

Do у вас есть идеи, почему эта проблема и как ее устранить?

- - - - - - редактировать - - - - - -

когда я запускаю вышеуказанную команду force-reinstall (так много кода выходит, что я не могу вставить все, но), хотя он заканчивается "успешно установленной подушкой", в коде есть некоторые предупреждения :

building 'PIL._imaging' extension
 (blabla code)
    _imaging.c:975:13: warning: array index of '1' indexes past the end of an array (that contains 1 elements) [-Warray-bounds]
        value = PyTuple_GET_ITEM(xy, 1);
                ^~~~~~~~~~~~~~~~~~~~~~~
    /usr/local/include/python3.4m/tupleobject.h:58:34: note: instantiated from:
    #define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i])
                                     ^
    /usr/local/include/python3.4m/tupleobject.h:27:5: note: array 'ob_item' declared here
        PyObject *ob_item[1];
        ^
    1 warning generated.

(blabla code)
   libImaging/Unpack.c:867:1: warning: unused function 'copy3' [-Wunused-function]
    copy3(UINT8* out, const UINT8* in, int pixels)
    ^
    1 warning generated.

7 ответов


У меня была эта проблема на Mac с Python 3.6.4. Решением было удалить подушку 5.1.0 и вместо этого установить 5.0.0.

pip uninstall Pillow
pip install Pillow==5.0.0

пробовал :

  • переустановите globaly PIL путем компиляции "Imaging-1.1.7", используя некоторые инструкции здесь, но не работает
  • переустановите подушку, и это зависимость глобально с помощью этой ссылке, но не работает
  • переустановите GCC4.2 Использование этой ссылке, но это не сработало

Я, наконец, понял, что я был в случае, описанном в удивительный ответ этот пост. В других слова, я запускаю mac, процессор которого способен 64bit, но прошивка ядра которого установлена на 32bit. Это проблема, поскольку проект, над которым я работаю, был построен для 64bit.

Как поясняется в этот пост, при установке python3 с помощью установщика (DMG) он будет нюхать, если ядро установлено на 32 бит и установить 32-битную версию python 3 соответственно. Но если вы просто загрузите источник tarball с веб-сайта python и установите его с помощью:

cd Python-3.4.1
./configure
make
sudo make install

затем версию 64bit питон3 должен быть установлен. Что вы можете проверить, выполнив:

file /usr/local/bin/python3
/usr/local/bin/python3: Mach-O 64-bit executable x86_64

это сделано, все проблемы исчезли с PIL / Pillow в virtualenv, используя эту 64-битную версию python3. Даже понижение pip стало ненужным.


У меня была эта ошибка с помощью отладчика PyCharm. Мне пришлось перейти в Настройки - > "интерпретатор проекта" выделить "подушку" и нажать маленькую стрелку вверх справа, чтобы обновить ее. Затем ошибка исчезла.


Я тоже получал ту же проблему при implememnting загрузке изображения с помощью CLoudinary , но нашел вышеуказанный ответ, но каким-то другим способом.

 sudo pip uninstall PIL

 sudo pip uninstall Pillow

 sudo pip install Pillow

после этого моя проблема была решена !


была аналогичная проблема, и мое решение было гораздо проще:

по-видимому, пакеты PIL и подушка не могут сосуществовать. если вы хотите использовать подушку, вам сначала нужно удалить PIL, а затем установить Pillow.

Если вы находитесь на Mac, вы должны установить несколько библиотек, а также с помощью brew. Ниже приведена последовательность шагов:

$pip uninstall PIL
$brew install libtiff libjpeg webp little-cms2
$pip install Pillow

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

>>> from PIL import Image

* обратите внимание, что библиотека по-прежнему говорит PIL, но теперь она импортирует из подушки вместо PIL.

Если вы можете успешно импортировать, то вам хорошо идти (по всей вероятности, вам не придется беспокоиться о настройке PYTHONPATH или 32/64-битных установок)

источник:https://pillow.readthedocs.io/en/latest/installation.html


для python3 убедитесь, что ваш $PYTHONPATH имеет virtualenv путь и Вместо выполнения команды

python manage.py migrate

Run:

python3 manage.py migrate

macOS High Sierra 10.13.6 Мое решение было

pip3 install Pillow

не

pip install Pillow