Когда имя пакета Python отличается от имени импорта - PullRequest
0 голосов
/ 26 февраля 2019

Проблема связана с пакетами Python, имена которых отличаются от используемых при импорте, например:

$ pip list | grep -i "yaml\|qt"  
PyYAML      3.13               
QtPy        1.5.2
  • pyyaml ​​(pip instal pyyaml), но импорт yaml
  • qtpy (pip install qtpy), да, импорт - это qtpy, но пакет - QtPy

Некоторые инструменты не могут справиться с этим, например, sphinx:

$ make html
WARNING: autodoc: failed to import module 'wireshark' from module 'logcollector.plugins'; the following exception was raised:
No module named 'qtpy'

Не помню сейчас, но то же самоепредназначен для инструментов, которые сканируют файл require.txt и выводят предупреждения о том, что пакет python yaml не установлен (но он есть и его имя pyyaml)

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

В случае сфинкса вы можете смоделировать сторонние пакеты с помощью: autodoc_mock_imports

0 голосов
/ 26 февраля 2019

Поскольку эти две концепции на самом деле не связаны.
Одна представляет собой концепцию имен пакетов / модулей на языке Python, другая - концепцию менеджера пакетов.

Посмотрите на простую команду упаковки с помощью zip:

zip -r MyCoolTool.zip tool.py

Инструмент назван tool, что, вероятно, не является уникальным, и если вы не знаете, что это MyCoolTool, вы не знаете, какой это tool.Когда я загружаю его куда-то, я называю его MyCoolTool, так что теперь у вас более уникальное имя, которое может быть немного более наглядным.

Другой момент заключается в том, что пакет pip может включать больше модулей, чем один.,PyYAML может, например, включать второй модуль Python yaml2xml в дополнение к yaml.

Наконец, может быть несколько реализаций.PyYAML звучит как чистая реализация Python.Теперь предположим, что вам нужен действительно быстрый анализатор, тогда вы можете запрограммировать CYAML с C-бэкэндом, но с тем же интерфейсом под именем yaml.

...