![](/img/trans.png)
[英]Why some package name of a complete referring could be omitted in python?
[英]Why are some Python package names different than their import name?
一些包是使用与 PyPI 上包的名称不同的字符串导入的,例如:
$ pip list | grep -i "yaml\|qt"
PyYAML 3.13
QtPy 1.5.2
一些工具无法处理,例如 sphinx:
$ make html
WARNING: autodoc: failed to import module 'wireshark' from module 'logcollector.plugins'; the following exception was raised:
No module named 'qtpy'
我现在不记得了,但同样适用于扫描requirements.txt
文件并打印未安装yaml
包的警告(但它是,它的名称是 pyyaml)。
因为这两个概念并没有真正的关联。
一个是包/模块名称的python概念,另一个是包管理器概念。
看一个带 zip 的简单打包命令:
zip -r MyCoolTool.zip tool.py
该工具名为tool
,这可能不是唯一的,如果您不知道它的 MyCoolTool,您就不会知道它是哪个tool
。 当我将它上传到某个地方时,我将其命名为MyCoolTool
,因此您现在使用了一个更独特的名称,这可能更具描述性。
另一点是,一个 pip 包可能包含更多的模块,而不仅仅是一个。 例如, PyYAML
可以在yaml
包含第二个 python 模块yaml2xml
。
最后可以有多种实现方式。 PyYAML
听起来像一个纯 python 实现。 现在假设您需要一个非常快速的解析器,然后您可以使用 C 后端编程CYAML
,但名称为yaml
接口相同。
在 sphinx 的情况下,您可以使用以下命令模拟 3rd 方包: autodoc_mock_imports
作者在不同环境中选择使用不同名称的原因有多种:
propy3
它可以作为一个下拉更换为propy
。 我想说这也是pillow
发生的事情。beautifulsoup4
可以导入作为bs4
(+为包停车bs4
)flask-restx
,包名称和导入名称已更改。正如Ziyad Edher在相关讨论中指出的那样,域名抢注是 PyPI 上的一个问题( 来源)。 如果您添加具有不同名称的包,则更有可能出现这种情况。
文档中的名称 vs "import" 包名 vs pypi 包名vs anaconda 包vs Debian :
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.