2015-09-16 124 views
58

CentOS的7 EPEL現在包括Python的3.4:yum install python34如何在CentOS 7中安裝pip?

然而,當我嘗試,儘管Python的3.4安裝成功,它不會出現安裝點子。這很奇怪,因爲pip應該默認包含在Python 3.4中。 which pip3找不到任何東西,也沒有which pip

如何在CentOS 7 EPEL版本中從Python 3.4包中訪問pip?

+2

可能相關:http://stackoverflow.com/questions/26576086/no-pip-binary-after-installing-python-3-4-2-on-centos-6-5 – cel

+0

我看了看那裏,但不幸的是沒有任何關係。 –

+0

所以沒有'pip34'二進制文件?那麼,如果安裝了,你將總能通過'python -m pip'調用pip。如果沒有安裝'python -m ensurepip'可以用來引導它。您可能需要提升權限才能調用後者的命令。 – cel

回答

61

我發現安裝pip3最簡單的方法(對於python3。x軟件包):

$ sudo yum install python34-setuptools 
$ sudo easy_install-3.4 pip 

當然,您需要事先啓用EPEL存儲庫。

您現在應該可以像下面的安裝包python3.x運行命令:

$ pip3 install foo 
+0

這應該是被接受的答案。 – maxschlepzig

+0

我認爲這是最好的解決方案,同時保持一切健全。我不建議編輯__init__.py – laapsaap

+0

同意的最佳解決方案使此默認答案 –

36
curl https://bootstrap.pypa.io/get-pip.py | python3.4 

或者,如果你沒有curl出於某種原因做:

wget https://bootstrap.pypa.io/get-pip.py 
python3.4 get-pip.py 

在這之後,你應該能夠運行

$ pip3 
+1

我得到這個錯誤:zipimport.ZipImportError:無法解壓縮數據; zlib不可用...你知道爲什麼會發生這種情況嗎? – SoldierCorp

+0

聽起來像你沒有zlib-devel或zlib,具體取決於。你可以嘗試與你的軟件包管理器一起安裝嗎? sudo yum安裝zlib或sudo apt-get install zlib。我希望有所幫助。 – DevOops

+0

我也面臨與@SoldierCorp相同的問題,但是當我嘗試安裝'zlib'時,它說'Package zlib-1.2.3-29.el6.x86_64已經安裝並且最新版本'任何想法發生了什麼? –

15

CentOS的7 yum包爲python34不包括ensurepip模塊,但由於某些原因缺少應該成爲該模塊一部分的setuptools和pip文件。要修復,下載一封來自PyPI最新的車輪到模塊的_bundled目錄(/lib64/python3.4/ensurepip/_bundled/):

setuptools-18.4-py2.py3-none-any.whl 
pip-7.1.2-py2.py3-none-any.whl 

然後編輯__init__.py匹配下載的版本:

_SETUPTOOLS_VERSION = "18.4" 
_PIP_VERSION = "7.1.2" 

之後python3.4 -m ensurepip按預期工作。 Ensurepip在每次創建虛擬環境時將自動調用,例如:

pyvenv-3.4 py3 
source py3/bin/activate 

希望RH將修復損壞的Python3.4 yum包,這樣不需要手動跳線。

+2

非常感謝。對於那些需要這些輪子可在這裏找到setuptools https://pypi.python.org/simple/setuptools/和這裏用於點 https://pypi.python.org/simple/pip/ – yoshiwaan

+0

不幸的是,編輯ensurepip __init__.py文件導致RPM驗證失敗,並且還會覆蓋程序包更新。 – carlwgeorge

+1

我很想知道他們的理由是什麼導致這個混亂。我告訴自己必須有一個很好的理由...... – xenithorb

-4

在CentOS 7,pip版本爲pip3.4和位置爲:

/usr/local/bin/pip3.4 
+2

/usr/local/bin中的文件不太可能由RHEL/CentOS打包。你能成功執行「rpm -qf /usr/local/bin/pip3.4」嗎?如果這樣的話,輸出中的「rpm -qi 」......誰是打包者? –

6

而不是使用broken EPEL python34 packages,您可以啓用IUS repo並讓它正常工作。

  • PIP虛擬環境內

主要python34upython35u IUS封裝包括pyvenv工具(/usr/bin/pyvenv-3.4/usr/bin/pyvenv-3.5),其包括PIP的捆綁車輪和setuptools的提供引導虛擬環境。

  • 全球PIP

python34u-pippython35u-pip IUS套餐分別包括/usr/bin/pip3.4/usr/bin/pip3.5。這些工作可以很好地將軟件包安裝到系統site-packages目錄。

+1

不知道爲什麼有人會低估這個答案。感謝您將IUS引入我們的視線。 – Dave

+0

關於downvote,這將有助於解釋關於EPEL安裝的「破壞」評論。我今天也從相關的搜索中發現了IUS,任何提到的答案都值得讚賞。 –

+1

@MarkEdington我編輯了答案,添加一個鏈接到https://bugzilla.redhat.com/show_bug.cgi?id=1263057。 – carlwgeorge

5
yum install python34-pip 

pip3.4 install foo 

您可能需要安裝EPEL庫:

yum install -y epel-release

+0

這個yum軟件包來自哪個倉庫? –

+1

CentOS 7. *:'yum install -y epel-release' –

+0

這樣的聲音最近被添加到EPEL中,並且可能應該成爲正確的答案。一旦其他人確認這對他們有用,那麼我會將其作爲公認的答案。 –

0

只需使用easy_install(一個Setuptools來打包python librarie)就可以輕鬆完成此操作。

  • 假設。 在執行此操作之前,請檢查您的CentOS機器是否安裝了python(至少2.x)。

  • 安裝pip的步驟。

    1. 因此,讓你安裝的easy_install,

      sudo yum install python-setuptools python-setuptools-devel

    2. 現在,讓我們做的easy_install點子,

      sudo easy_install pip

這是偉大的。現在你有點子:)