Django Установка подушки работает для миграции, но не запуска - PullRequest
0 голосов
/ 18 февраля 2020

При запуске mange makemigrations я получил ошибку, в которой говорилось, что мне нужно установить Pillow, потому что я использовал ImageField. На MacOS я запустил следующее:

python3 -m pip install pillow Установка по умолчанию для пользователя, так как обычные пакеты сайта недоступны для записи Сбор подушек Загрузка Pillow-7.0.0-cp37-cp37m-macosx_10_6_intel .whl (3,9 МБ) | ███████████████████████████████████████ | 3,9 МБ 2,1 МБ / с Установка собранных пакетов: подушка Успешно установленная подушка-7.0.0

Когда я снова запустил контрольные миграции, он не жаловался, и миграция работала также. В моем файле models.py я не получил никаких ошибок (от PyCharm) для следующего импорта:

from PIL import Image

Я прочитал, что мне пришлось использовать эту команду вместо Pillow. Использование Pillow помечается как не найденное.

Когда я запускаю команду запуска в PyCharm, я получаю сообщение об ошибке:

ОШИБКИ: base.Team.profile_image: (fields.E210) Невозможно использовать ImageField, потому что Подушка не установлена. СОВЕТ: Получите подушку на https://pypi.org/project/Pillow/ или выполните команду "python -m pip install Pillow".

Когда я проверяю интерпретатор проекта в PyCharm, он показывает подушку как пакет в последней версии.

Я использовал home-brew для установки последней версии Python3. Существует также устаревшая версия MacOS. Может ли Подушка быть установлена ​​в неправильном месте? Как я могу сказать?

Еще одна странная вещь - я могу запускать миграции только из PyCharm. Из оболочки в каталоге проекта я получаю:

python3 -m manage.py checkmigrations / usr / local / bin / python3: Ошибка при поиске спецификации модуля для manage.py (ModuleNotFoundError: путь атрибут не найден в «управлении» при попытке найти «manage.py»)

Он отлично работает, когда я запускаю его в PyCharm

Fix

Да, у меня установлен pipenv, но на нем не было оболочки. Я думал, что это была ссылка rbenv, которую я использовал довольно часто. Это мой первый django проект.

Я начал с:

merrittsecurity python3 -m pipenv shell

Моя подсказка изменилась на:

(merrittsecurity) ➜ merrittsecurity

Я использую iTerm2, zshr c и, о мой ZSH. Я предполагаю, что мой ZSH добавляет его. Хорошая особенность.

Из-за переноса строк в моем браузере я был уверен, что это djangopillow или два слова. Я выбрал первое, потому что было бы ошибка, если бы оно не было правильным. Это произошло, и я ввел:

(merrittsecurity) ➜ merrittsecurity pipenv install django pillow

Это сработало, но выдало ошибки, говорящие о том, что может найти djangopillow. Я нашел это в файле пипса и удалил его. Иногда неправильный выбор оставляет детрит. Когда я снова запустил установку подушки, она завершилась без ошибок.

1 Ответ

1 голос
/ 18 февраля 2020

Вы используете какую-либо виртуальную среду? Если нет, то вам определенно следует. Я бы порекомендовал pipenv. Установите его, затем запустите pipenv shell в папке вашего проекта, затем запустите pipenv install django pillow. После установки запустите pip freeze и посмотрите, есть ли подушка в списке.

...