Убедитесь, что вы подклассифицируете оба: UIImagePickerControllerDelegate, UINavigationControllerDelegate
.
Также не забудьте установить делегат:
let picker = UIImagePickerController()
picker.allowsEditing = true
picker.sourceType = .photoLibrary
picker.delegate = self //Don't forget this line!
self.present(picker, animated: true, completion: nil)
Кредиты на этот источник .
TL; DR: Часто существует несколько версий интерпретаторов python и версий pip. Использование python -m pip install <library-name>
вместо pip install <library-name>
гарантирует, что библиотека будет установлена в интерпретатор python по умолчанию.
Также обратите внимание: из моего личного опыта я бы посоветовал использовать sudo pip install
для установки пакетов в системные интерпретатор python по умолчанию. Это может привести к различным беспорядочным проблемам. Всякий раз, когда у вас возникает соблазн вызвать pip
с помощью sudo
, сначала проверьте, если virtualenv не лучший вариант для вас.
Большинство современных систем отправляют несколько интерпретаторов python. Каждый интерпретатор поддерживает собственный набор установленных пакетов.
В системах Unix оболочка может использоваться для понимания того, что именно происходит.
Ввод текста which -a python
показывает всех интерпретаторов, что в вашем PATH
. Первая строка соответствует интерпретатору, который используется при запуске python
из командной строки.
/private/tmp/py32/bin/python
/usr/local/bin/python
/usr/bin/python
Каждая версия pip принадлежит ровно одному интерпретатору. which -a pip
показывает все версии pip. Снова первая строка - это то, что будет вызываться при вводе pip
в вашей оболочке.
/usr/local/bin/pip
/usr/bin/python
Обратите внимание, что в этом случае python
принадлежит интерпретатору, установленному в /private/tmp/py32/
, но pip
устанавливается в интерпретатор /usr/local/bin
. После успешной установки библиотеки вы не сможете импортировать ее в свой интерпретатор python по умолчанию.
Итак, как вы импортируете установленную библиотеку?
Ваш первый вариант - запустить нужный интерпретатор с его полным путем. Поэтому, если вы наберете /usr/local/bin/python
, вы сможете импортировать библиотеку.
Вторая - часто предпочтительная опция - специально вызвать правильную версию pip. Для этого вы можете использовать python -m pip install <library-name>
вместо pip install <library-name>
. Это вызовет версию pip, которая принадлежит вашему интерпретатору python по умолчанию.
@cel действительно дал отличный ответ. Я просто хочу добавить еще кое-что:
python <library>
, как правило, выводит информацию), чтобы убедиться, что вы правильно импортировали пакет. (я знаю, что мой ответ должен быть опубликован как комментарий в ответ @ cel. Просто у меня нет достаточной репутации, чтобы это сделать)
/usr/local/bin/python
, это обычно означает, что вы его установили. – Padraic Cunningham 20 September 2015 в 13:47python
, но и несколько интерпретаторов python. Часто интерпретатор python2.x и интерпретатор python3.x по умолчанию. Хм, может быть, мне придется переписать, чтобы сделать мой вопрос более ясным. – cel 20 September 2015 в 13:50which -a python
должен возвращать один путь при новой установке, и это должно быть сделано очень ясно, что вы не должны винтовать с помощью python по умолчанию. Если вы не знаете, что вы делаете, виртуальный или pyenv будет идти дальше. – Padraic Cunningham 20 September 2015 в 14:07virtualenvs
вместо того, чтобы касаться pythonsystem
- лучший способ. Тем не менее многие по-прежнему используютsudo pip install
из удобства. Я бы не рассматривал установку в системах python как ужасную. В конце концов, наверное, все мы это сделали до того, как были введены виртуальные виртуальные машины. – cel 20 September 2015 в 14:12