ImportError: нет модуля с именем seaborn (с использованием интерактивного режима) [duplicate]

Убедитесь, что вы подклассифицируете оба: 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)

Кредиты на этот источник .

12
задан cel 20 September 2015 в 13:45
поделиться

2 ответа

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 по умолчанию.

49
ответ дан cel 18 August 2018 в 22:27
поделиться
  • 1
    какие современные системы имеют несколько версий одного и того же питона? Когда вы видите /usr/local/bin/python, это обычно означает, что вы его установили. – Padraic Cunningham 20 September 2015 в 13:47
  • 2
    точка, которую я пытаюсь сделать, заключается в том, что существует не только python, но и несколько интерпретаторов python. Часто интерпретатор python2.x и интерпретатор python3.x по умолчанию. Хм, может быть, мне придется переписать, чтобы сделать мой вопрос более ясным. – cel 20 September 2015 в 13:50
  • 3
    Да, но в unix есть системные интерпретаторы python по умолчанию, а не несколько версий интерпретаторов python2 или 3, установленных по умолчанию, если вы видите другие интерпретаторы, то вы их установили, which -a python должен возвращать один путь при новой установке, и это должно быть сделано очень ясно, что вы не должны винтовать с помощью python по умолчанию. Если вы не знаете, что вы делаете, виртуальный или pyenv будет идти дальше. – Padraic Cunningham 20 September 2015 в 14:07
  • 4
    @Padraic Cunningham, согласитесь, что использование virtualenvs вместо того, чтобы касаться python system - лучший способ. Тем не менее многие по-прежнему используют sudo pip install из удобства. Я бы не рассматривал установку в системах python как ужасную. В конце концов, наверное, все мы это сделали до того, как были введены виртуальные виртуальные машины. – cel 20 September 2015 в 14:12
  • 5
    Я использую pyenv, когда хочу запустить свой код в разных версиях python или тестировать новые функции, я использую системный python для всего остального, потому что у меня есть хорошее представление о том, как все работает, но это понимание натолкнулось на труд и привело к нарушению моего OS несколько раз за эти годы, используя системный python, когда вы знаете, как хорошо, но есть множество сообщений о SO, например, почему apt-get больше не работает .. от людей, которые установили несколько версий python, а затем изменили свой по умолчанию в попытке исправить ImportError: нет модуля с именем & lt; library-name & gt; – Padraic Cunningham 20 September 2015 в 14:19

@cel действительно дал отличный ответ. Я просто хочу добавить еще кое-что:

  1. Убедитесь, что вы устанавливаете библиотеку в виртуальный файл, который вы хотите использовать.
  2. Есть несколько библиотек, имена пакетов отличаются от имени библиотеки. Вы можете посмотреть их документацию в Интернете (google с ключевым словом python <library>, как правило, выводит информацию), чтобы убедиться, что вы правильно импортировали пакет.

(я знаю, что мой ответ должен быть опубликован как комментарий в ответ @ cel. Просто у меня нет достаточной репутации, чтобы это сделать)

2
ответ дан Luan Nguyen 18 August 2018 в 22:27
поделиться
  • 1
    это должны быть комментарии? – Kevin Guan 20 September 2015 в 14:27
  • 2
    Yeap. Внимательно прочитав вопрос, ответ и комментарии, я понял, что шахта должна быть комментарием – Luan Nguyen 20 September 2015 в 14:31
  • 3
    Тем не менее, я не мог комментировать вопрос @ cel и отвечать, так как моя репутация ниже 50 :( Поэтому выложил мой «ответ», – Luan Nguyen 20 September 2015 в 14:32
  • 4
    Хорошо, я понимаю. – Kevin Guan 20 September 2015 в 14:35
  • 5
    +1 для вашей точки №2. Просто запустите случай, когда имя пакета заглавное, а имя импорта - нет. – horaceT 12 December 2017 в 23:43
Другие вопросы по тегам:

Похожие вопросы: