以下工作在RHEL6上,它仍在運行Python 2.6。爲了讓rpy2安裝腳本找到R,我們需要從Python 2.7複製一些代碼到rpy2的安裝文件中。
運行
pip install rpy2
其未能按你的描述後,輸出告訴我們到哪裏尋找下載的代碼(例如/ tmp目錄/ PIP-集結meuser/rpy2 /)
訪問該文件夾,編輯setup.py 第一個「高清」行前添加以下代碼:
import subprocess
if "check_output" not in dir(subprocess): # duck punch it in!
def f(*popenargs, **kwargs):
if 'stdout' in kwargs:
raise ValueError('stdout argument not allowed, it will be overridden.')
process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
output, unused_err = process.communicate()
retcode = process.poll()
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
raise subprocess.CalledProcessError(retcode, cmd)
return output
subprocess.check_output = f
保存文件。現在再次嘗試你的pip安裝行;它應該工作。
以供參考,該源從https://hg.python.org/cpython/file/d37f963394aa/Lib/subprocess.py#l544 來了,解決的辦法是從一個類似的問題,subprocess.check_output() doesn't seem to exist (Python 2.6.5)
如果你碰巧沒有root訪問的服務器上運行,則可能反而可以使用安裝命令
pip install --upgrade -v --user rpy2
將最新的rpy2安裝到您的本地(用戶)帳戶中。其他一切都是一樣的。
我有同樣的問題,並希望以應用解決方案。但是,在錯誤行中報告的那個目錄在創建後立即被刪除。任何方法來克服這一點? – splinter
對不起。我從RHEL轉移了。其他人可以幫忙嗎?儘管Ctrl-z會中斷/暫停點進程...(鍵入「fg」來恢復它) – CPBL