2012-07-12 52 views
17

有人知道Python模塊名稱背後的邏輯與easy_install中使用的實際包名稱嗎?給定Python包的名稱,要導入的模塊的名稱是什麼?

數(其中包括)的例子,似乎有點unlogical對我說:

  • 我們做easy_install mysql-python,但進口其實import MySQLdb
  • 我們做easy_install python-memcached,但進口其實import memcache (沒有後面的d)

我沒有找到一致的找到等價的方法。對於某些模塊,我花了很多瀏覽來找到它。我究竟做錯了什麼?

+3

它是由包維護者如何命名它裏面的包和模塊。 – 2012-07-12 14:23:46

+10

我投票重新打開。只是因爲沒有好的答案並不意味着這不是一個好問題,而且我不願意看到它在適當的管家中被刪除。 – 2012-07-26 22:25:09

回答

13

遺憾的是,沒有辦法去瘋狂。 package index中的名稱與模塊名稱import無關。災難性地some packages share module names。如果你安裝了這兩個版本,你的應用程序將會破壞,甚至可能發生。 (Ruby has this problem too


Python中的打包通常是可怕的。根本原因在於語言沒有包管理器。 Ruby和Nodejs提供全功能的軟件包管理器Gem和Npm,並且培育了以GitHub爲中心的共享社區。 Npm使得publishing packages與安裝它們一樣容易。 Nodejs到了2009年,已經有14k packages。歷史悠久的Python軟件包索引列出了24k。 Ruby Gems列出了44k包。

幸運的是,Python有一個體面的包管理器,名爲Pip。 Pip受Ruby's Gem啓發,但缺乏一些重要功能(例如,列出軟件包和upgrading en mass)。諷刺的是,皮普本身是complicated to install。在流行的64位Windows上安裝要求從源代碼構建和安裝兩個包。這對任何新編程的人來說都是一個很大的要求。

Python的開發人員對所有這些沮喪都一無所知,因爲他們是經驗豐富的程序員,從源代碼構建起來很舒服,他們使用Linux發行版和打包的Python模塊。

直到Python附帶包管理器,成千上萬的開發人員將不必要的浪費時間來重新發明輪子。


Python 3解決了很多包裝問題。有aren't any packages for Python 3

+1

我當然希望這個答案部分是口齒伶俐。我一直告訴自己這部分*不能*認真,但其他部分是現貨... – delnan 2012-07-12 17:37:27

+0

在win64上安裝pip真的很糟糕嗎?我通常只需下載setuptools安裝程序,然後運行'easy_install pip'。雖然我正在使用32位Python,所以也許這就是差異所在。 – obmarg 2012-07-13 09:58:06

+0

沒錯。沒有用於64位Python的[setuptools](http://pypi.python.org/pypi/setuptools/)安裝程序。 「目前,所提供的。由於distutils安裝程序兼容性問題,exe安裝程序不支持Windows的Python 64位版本「。我勸阻朋友安裝64位Python。 – 2012-07-23 08:55:13

相關問題