2014-01-10 40 views
1

爲了序言,我目前使用Python 2.7運行OSX 10.9.1。easy_install和文件權限

我想安裝使用easy_install(本例中爲pip)的Python包。首先,我嘗試:

easy_install pip

然後我得到的說,我沒有到site-packages目錄的寫訪問的錯誤。沒問題:

sudo easy_install pip

一切下載罰款。下圖顯示了Bash的會議上,我在安裝pip後:

$ pip 
-bash: /usr/local/bin/pip: Permission denied 
$ cd /usr/local/bin/pip 
$ ls -l 

... 
-rwx------ 1 root admin  275 Jan 10 11:05 pip 
... 

$ chmod 754 pip 
chmod: Unable to change file mode on pip: Operation not permitted 
$ sudo chmod 754 pip 
$ pip 
Traceback (most recent call last): 
    File "./pip", line 5, in <module> 
    from pkg_resources import load_entry_point 
    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 3007, in <module> 

    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 728, in require 
    requirements specified when this environment was created, or False 
    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 626, in resolve 

pkg_resources.DistributionNotFound: pip==1.5 

好了,也許有某些權限的設置仍然混亂。下面是搜索顯示我時,我認爲/Library/Python/2.7/site-packages/

No permission

而且這裏是觀看同一個目錄時ls -l回報:

... 
drwx------ 4 root wheel  136 Jan 10 11:24 pip-1.5-py2.7.egg 
... 

好了,我顯然不具備使用pip許可仍然是因爲我沒有存檔文件的執行權限。如何:

$ chmod 754 pip-1.5-py2.7.egg 
chmod: Unable to change file mode on pip-1.5-py2.7.egg/: Operation not permitted 
$ sudo chmod 754 pip-1.5-py2.7.egg 
$ pip 
Traceback (most recent call last): 
    File "/usr/local/bin/pip", line 9, in <module> 
    load_entry_point('pip==1.5', 'console_scripts', 'pip')() 
    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 378, in load_entry_point 
    def get_resource_stream(manager, resource_name): 
    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 2565, in load_entry_point 
    section = line[1:-1].strip() 
ImportError: Entry point ('console_scripts', 'pip') not found 

我的假設是,所有的權限被搞砸了,因爲我以前sudo,現在我只是追逐周圍的權限。雖然這可能是錯誤的。我從來沒有想過在升級到OSX 10.9之前有這個問題。

我的問題是:儘管我是計算機的管理員,但是Unix系統總是使用sudo來做到這一點嗎?有沒有辦法讓我永久糾正這一點,以便我實際上有權運行已安裝的軟件包?你認爲我的系統上有某個設置不正確嗎?

+1

原因編號273不升級到小牛...... – MattDMo

+1

@Thanizer,你有沒有運行'磁盤工具'和修復權限?那可能是一個很好的開始。 chmod 754也不會削減它,你需要使用755併爲此擁有'owner root','group wheel'。 –

+0

@ I'L'I,我剛剛修復權限無濟於事。現在我只是使用Homebrew的Python公式,一切似乎都正常工作。我仍然想知道爲什麼我不能使用OSX的本地'easy_install'腳本,但沒有權限問題。 – Thanizer

回答

1

你的假設是正確的所有的權限搞砸了,因爲你使用了sudo。首先打破使用sudo「修復」問題的習慣。您應該認真考慮以sudo的身份執行操作,就像您以root身份登錄一樣。如果你的態度是「沒問題:sudo ......」你(最終)會陷入一個受傷的世界。每當您使用sudo時,您都會再次改變OSX開箱即用的方式。

接下來,擺脫嘗試將所有內容放入操作系統版本的python的習慣。我建議先清除你的/ usr/local,儘管這可能會問很多。

Then brew install python - 自己找個pristine python。好 - 你已經做到了。

which pip - 確保您使用的是剛剛安裝在/ usr/local中的pip brew;如果不能根據需要調整你的~/.bashrc啓動文件。

下一個brew install virtualenvbrew install virtualenvwrapper - 當你pip install支持一個隻影響一個項目的項目。當你在它的時候添加export PIP_REQUIRE_VIRTUALENV=true到你的~/.bashrc,所以你不會忘記,並在未來陷入困境。

現在瞭解virtualenv,並開始瞭解您的項目的真實依賴性和停止戰鬥,造成不同項目的要求與對方和普通位干擾衝突腐爛的亂用sudo將導致你。