Error in sitecustomize; set pythonVERBOSE for traceback: KeyError: 'PYTHONPATH'
系統不知道更改了什麽之後就遇到了這個問題,每當切換目錄(cd)的時候都會跳出來錯誤提示,非常惱人。在 stackoverflow 1 上沒找到解決方法,倒是在一個日文 博客 裏找到了。我也不懂日文,但是看他羅列的文件和代碼,大概能了解他的思路,按照思路走,才發現了這個問題。
背景
我在 mac 系統上 使用 brew 安裝了 Python2.7.10 替代了系統的 Python,之後又使用 pyenv 來管理 Python 的版本,pyenv 中安裝了 miniconda 和 miniconda3,默認使用的是miniconda3,也就是 Python3。
挖坑
首先,cd會出現這個問題的原因是我在.zshrc中執行了eval "$(pyenv init -),如果刪除這一行,就不會有這個問題了。
其次,這個問題不僅在 cd 的時候會出現,執行 python 的時候也會。
> python
Error in sitecustomize; set PYTHONVERBOSE for traceback:
KeyError: 'PYTHONPATH'
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:52:12)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
# 返回一個 list。著重關心其中一個元素:'/usr/local/lib/python2.7/site-packages'
這裏其實就發現問題了,Python3.5 怎麽會有 2.7 的 site-packages 呢?
/usr/local/是 brew 的默認安裝路徑,繼續挖。
brew doctor 看診斷
既然可能是 brew 安裝的問題,執行brew doctor。
Warning: Your default Python does not recognize the Homebrew site-packages
directory as a special site-packages directory, which means that .pth
files will not be followed. This means you will not be able to import
some modules after installing them with Homebrew, like wxpython. To fix
this for the current user, you can run:
mkdir -p /Users/username/.local/lib/python3.5/site-packages
echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/username/.local/lib/python3.5/site-packages/homebrew.pth
這裏就是問題所在!brew 在安裝某些軟件之後,可能需要用戶手動做一些後續操作。想起來 brew 更新 Python 的時候,它曾經提示我這樣做,於是就直接復制代碼執行,結果就導致了這個問題。把homebrew.pth 的內容改成
import site; site.addsitedir("/usr/local/lib/python3.5/site-packages")
我分析,其原因應該是 brew 沒有安裝 Python3,但是通過 pyenv 安裝了 Python3,所以 brew 還是按照自己的意思建議你在homebrew.pth 導入 2.7 的site-packages。
-
python - PYTHONPATH error when trying to activate a virtual environment - Stack Overflow , python - "KeyError: 'PYTHONPATH'" message when updating Anaconda packahes on Mac OS X - Stack Overflow , python - After installing Anaconda, I get constant "KeyError: 'PYTHONPATH'" messages - Stack Overflow ?
Tags: copyright default doctor python import
文章來源: