OS X - 為什麼 python 在“which python”中沒有正確的來源?…並且在系統級 python 中更壞?
TL; DR:如果我試圖從安裝了自製軟體的版本中獲取 python 2.7,這個 $PATH 字元串是否會倒退?
$ echo $PATH /Library/Frameworks/Python.framework/Versions/3.4/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin
我曾經
brew install python
將 python 2.7.13 放在 El Capitan (OS X 10.11) 上,一段時間後一切正常。然後我嘗試部署一個 venv,它橫向執行,我認為我的故障排除發現了一個更深層次的問題(或幾個)。我的目標是在 OS X 的 python 安裝之外安裝和執行 Python 2.7.x。除了要與 brew-installed python 2.7 一起安裝的其他一些導入模組之外,我還瞄準pip
and 。venv
(我知道弄亂系統原始的 Python 會導致很深很深的問題——所以我想完全保持原樣。)$ brew info python python: stable 3.6.5 (bottled), devel 3.7.0b3, HEAD [pinned at 2.7.13] Interpreted, interactive, object-oriented programming language https://www.python.org/ /usr/local/Cellar/python/2.7.13 (6,337 files, 87.0MB) * Built from source on 2017-02-01 at 19:23:01 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb
brew info python
向我展示了 python 2.7.13 已安裝並固定。偉大的。但是,如果是這樣,為什麼which python
指向系統安裝的版本?$ which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python
檢查 $PATH,那裡似乎出了點問題…
$ echo $PATH /Library/Frameworks/Python.framework/Versions/3.4/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin
所以我目前的 $PATH 是(為了清楚起見
<cr>
之後:
):
/Library/Frameworks/Python.framework/Versions/3.4/bin:
/Library/Frameworks/Python.framework/Versions/2.7/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/opt/X11/bin:
/usr/local/git/bin
正確的 $PATH 順序是否應該是
/usr/local/bin:
/Library/Frameworks/Python.framework/Versions/3.4/bin:
/Library/Frameworks/Python.framework/Versions/2.7/bin:
/usr /bin:
/bin:
/usr/sbin:
/sbin:
/opt/X11/bin:
/usr/local/git/bin
根據這個頁面,我需要添加
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
到我的.profile
,這給了我三個問題:1.我需要添加
/usr/local/sbin
到我的 $ PATH? 2. I thought my $ PATH 將通過重新啟動持續存在 - 我錯了嗎?
- 如果我需要添加到
~/.profile
,我可以添加到~/.bash_profile
嗎?最後,這是我現在看到的錯誤之一:
$ vim peuler.py Traceback (most recent call last): File "<string>", line 9, in <module> File "/Users/user/.vim/bundle/powerline/powerline/__init__.py", line 6, in <module> import logging File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 26, in <module> import sys, os, time, cStringIO, traceback, warnings, weakref, collections ImportError: No module named time An error occurred while importing powerline module. This could be caused by invalid sys.path setting, or by an incompatible Python version (powerline requires Python 2.6, 2.7 or 3.2 and later to work). Please consult the troubleshooting section in the documentation for possible solutions. Unable to import powerline, is it installed? Press ENTER or type command to continue
對我來說,這表明系統安裝的 Python 版本出了點問題——是這樣嗎?(沒有模組命名
time
?那不是很好..)我可以撕掉所有安裝自製軟體的 Python,確保安裝作業系統的 Python 版本是純的,然後用自製軟體重新安裝所有東西嗎? . 還是系統級 Python 完全被劫持了?
我仍然不知道我的系統安裝的 python 是否搞砸了,但是切換 PATH 解決了 vim 外掛的問題。
正確的 $PATH 順序是(再次,為了清楚起見,
<cr>
在後面添加:
):
/usr/local/bin:
/usr/local/sbin:
/Library/Frameworks/Python.framework/Versions/3.4/bin:
/Library /Frameworks/Python.framework/Versions/2.7/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/opt/X11/bin:
/usr/local/git/bin