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