Ger*_*Yin 29 python pip easy-install pypi
有人知道Python模块名称背后的逻辑与easy_install中使用的实际包的名称吗?
一些(以及其他)示例对我来说似乎有些不合逻辑:
easy_install mysql-python,但实际上是进口import MySQLdbeasy_install python-memcached,但实际上是进口import memcache(没有尾随d)我找不到找到等价的一致方法.对于某些模块,我花了很多时间浏览它.我究竟做错了什么?
Col*_*nic 18
遗憾的是,疯狂没有办法.在名称包指数是独立的模块名称你的import.灾难性的一些包共享模块名称.如果您同时安装两者,您的应用程序将以均匀的赔率打破.(Ruby也有这个问题)
用Python打包通常很可怕.根本原因是该语言没有包管理器.Ruby和Nodejs提供全功能的包管理器Gem和Npm,并培育了以GitHub为中心的共享社区.Npm使发布包像安装一样简单.Nodejs到了2009年,已经有14k包.古老的Python包索引列出了24k.Ruby Gems列出了44k包.
幸运的是,Python有一个不错的包管理器,叫做Pip.Pip的灵感来自Ruby的Gem,但缺乏一些重要的功能(例如列出包和升级质量).具有讽刺意味的是,Pip本身安装起来很复杂.在流行的64位Windows上安装需要从源代码构建和安装两个软件包.这对于任何刚接触编程的人来说都是一个很大的问
Python的开发人员对所有这些挫败感都一无所知,因为他们是经验丰富的程序员,他们很容易从源代码构建,他们使用Linux发行版和打包的Python模块.
在Python附带包管理器之前,成千上万的开发人员将不必要地浪费时间重新发明轮子.
Python 3解决了包装的许多问题.有没有为Python 3的任何程序包.
Jak*_*kul 12
与公认的答案所暗示的不同,它实际上是可能的,尽管确实很麻烦。
模块名称可以top_level.txt在包安装的元数据目录中找到。
用 python 访问它(python-memcached用你的包名替换):
>>> import pkg_resources as pkg # included in setuptools package
>>> metadata_dir = pkg.get_distribution('python-memcached').egg_info
>>> open('%s/%s' % (metadata_dir, 'top_level.txt')).read().rstrip()
'memcache'
Run Code Online (Sandbox Code Playgroud)
或者使用等效的 bash “one liner”:
cat $(python -c "import pkg_resources; \
print(pkg_resources.get_distribution('python-memcached').egg_info)")/top_level.txt
Run Code Online (Sandbox Code Playgroud)
请记住,某些软件包安装了多个模块,因此我所介绍的方法可以返回多个模块名称。
| 归档时间: |
|
| 查看次数: |
4947 次 |
| 最近记录: |