Osx

OS X - 為什麼 python 在“which python”中沒有正確的來源?…並且在系統級 python 中更壞?

  • April 16, 2018

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 一起安裝的其他一些導入模組之外,我還瞄準pipand 。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 將通過重新啟動持續存在 - 我錯了嗎?

  1. 如果我需要添加到~/.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

引用自:https://unix.stackexchange.com/questions/437592