Учитывая имя пакета Python, каково имя импортируемого модуля?

18

Кто-нибудь знает логику имен модулей Python и имя фактического пакета, используемого в easy_install?

Несколько (среди прочих) примеров, которые кажутся мне немного нелогичными:

  • Мы делаем easy_install mysql-python , но импорт фактически равен import MySQLdb
  • Мы делаем easy_install python-memcached , но импорт фактически равен import memcache (без конечного d)

Я не нашел последовательного способа найти эквивалентность. Для некоторых модулей мне потребовалось много времени, чтобы найти его. Что я делаю неправильно?

    
задан Gerard Yin 12.07.2012 в 16:18
источник
  • Речь идет о пакете и модулях внутри пакета. –  Lev Levitsky 12.07.2012 в 16:23
  • Я голосую, чтобы снова открыть. Просто потому, что нет хорошего ответа, это не значит, что это был не очень хороший вопрос, и мне было бы неловко видеть, как он удалился в пригороде домашнего хозяйства. –  Mark Ransom 27.07.2012 в 00:25

2 ответа

13

К сожалению, нет никакого метода безумия. Имя в индексном пакете не зависит от имени модуля,%%. Катастрофа некоторые пакеты разделяют имена модулей . Если вы установите оба варианта, ваше приложение будет разорваться с равными шансами. ( Ruby тоже имеет эту проблему )

Упаковка в Python, как правило, ужасная. Основной причиной является то, что язык отправляется без менеджера пакетов. Ruby и Nodejs поставляются с полнофункциональными менеджерами пакетов Gem и Npm, а также развивают совместные сообщества, сосредоточенные вокруг GitHub. Npm делает публикацию пакетов так же просто, как и их установку. Nodejs прибыл в 2009 году и уже имеет пакеты 14k . Почтенный индекс пакета Python содержит список 24k. Ruby Gems перечисляет 44 тыс. Пакетов.

К счастью, есть один достойный менеджер пакетов для Python, называемый Pip . Пип вдохновлен Ruby's Gem, но ему не хватает некоторых важных функций (например, листинг пакетов и обновления в массе ). По иронии судьбы, сам Pip сложный для установки . Установка на популярной 64-битной Windows требует создания и установки двух пакетов из исходного кода. Это большая просьба к любому новому программированию.

Разработчики Python не знают об этом разочаровании, потому что они являются опытными программистами, удобными для построения из источника, и они используют дистрибутивы Linux с упакованными модулями Python.

До тех пор, пока Python не отправится с менеджером пакетов, тысячи разработчиков не понапрасну будут тратить время на создание колеса.

Python 3 решает много проблем с упаковкой. Там не являются пакетами для Python 3 .

    
ответ дан Colonel Panic 23.05.2017 в 14:02
  • Я надеюсь, что этот ответ частично застенчив. Я продолжаю рассказывать себе, что части этого не могут быть серьезными, но другие части ... –  Jul 12 '12 at 17:37 12.07.2012 в 19:37
  • Является ли установка pip на win64 действительно такой плохой? Обычно я просто загружаю setuptools installer, а затем запускаю easy_install pip. Хотя я использую 32-битный python, так, возможно, именно в этом и заключается разница. –  obmarg 13.07.2012 в 11:58
  • Правильно. Нет установки setuptools для 64-битного Python. «В настоящее время предоставленный установщик .exe не поддерживает 64-разрядные версии Python для Windows из-за проблемы совместимости с установкой distutils». Я препятствую друзьям устанавливать 64-битный Python. –  Colonel Panic 23.07.2012 в 10:55
  • pip может отображать пакеты: установленные пакеты с замораживанием пива и онлайн-пакеты (хранящиеся в PyPI) с поиском пипов. –  Balthazar Rouberol 17.09.2013 в 09:03
0
pip search mysql

И это тоже хорошо читает: Зачем использовать pip над easy_install?     

ответ дан JosefAssad 12.07.2012 в 16:29