尝试激活虚拟环境时出现PYTHONPATH错误

时间:2016-01-24 20:48:36

标签: python bash shell

更新:我现在已将.bash_profile重置为此(基于this blog post):

PYTHONPATH="${PYTHONPATH}:/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/:$PATH"
export PYTHONPATH

之后,我再次尝试了source activate并收到此错误:

Failed to import the site module
Your PYTHONPATH points to a site-packages dir for Python 2.x but you are running Python 3.x!
     PYTHONPATH is currently: ":/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/:/Users/name/anaconda/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Users/name/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/name/bin:/usr/local/git/bin:/Library/TeX/texbin"
     You should `unset PYTHONPATH` to fix this.

这有一个主要问题,因为我的.bash_profile中没有设置PYTHONPATH ......现在,我继续执行PYTHONPATH=/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/

但是,即使我指向3.4目录,我仍然会收到此错误:

Your PYTHONPATH points to a site-packages dir for Python 2.x but you are running Python 3.x!
     PYTHONPATH is currently: "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/"
     You should `unset PYTHONPATH` to fix this.

使用unset PYTHONPATH让我处于下面提到的相同位置......

我使用的是macbook pro,通常使用Python 3.X.有时我需要使用Python 2.7并且我创建了一个anaconda虚拟环境,以便我这样做。从昨天开始,我在命令行中尝试source activate我的Python 2虚拟环境时,开始收到以下错误的5个实例:

Error in sitecustomize; set PYTHONVERBOSE for traceback:
KeyError: 'PYTHONPATH'

我再次执行与PYTHONVERBOSE=1 source activate python2相同的命令并找到了Traceback(对于每个错误实例,它都是相同的):

Traceback (most recent call last):
  File "/Users/name/anaconda/lib/python3.4/site.py", line 508, in execsitecustomize
    import sitecustomize
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1129, in _exec
  File "<frozen importlib._bootstrap>", line 1471, in exec_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "/usr/local/lib/python2.7/site-packages/sitecustomize.py", line 15, in <module>
    str(sys.version_info[0]) + '.x!\n     PYTHONPATH is currently: "' + str(os.environ['PYTHONPATH']) + '"\n' +
  File "/Users/name/anaconda/lib/python3.4/os.py", line 635, in __getitem__
    raise KeyError(key) from None
KeyError: 'PYTHONPATH'

有谁知道如何解决这个问题?在我完全知道自己在做什么之前,我不想调整任何文件。

1 个答案:

答案 0 :(得分:0)

看起来您的系统上不再设置PYTHONPATH,并且代码假设环境中存在某些东西。

我相信你可以使用以下方法在mac中设置一个空白路径;请记住,如果你的python3.4依赖于系统路径,这可能是危险的!警告!:我不在Mac上,因此您可能需要在右侧给出一些字符串,否则可能无法保存密钥

import os
pypath = os.environ.get("PYTHONPATH", "")
os.environ["PYTHONPATH"] = pypath

如果您不想在系统范围内设置任何内容,则可以在sitecustomize运行之前将该变量添加到正在运行的python脚本中。 Buildout允许你用前脚本(通过zc.buildout或zc.recipes,我确信Anaconda有类似的东西)这样做,这将允许PYTHONPATH在3.4和2.7不同,这就是你&#39 ;首先尝试做的事情:

<TextBox Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="0"  
         IsReadOnly="True" AcceptsTab="True" 
         Height="200"  TextWrapping="Wrap" Name="txtRecord" 
         Margin="0,3,0,0" 
         AcceptsReturn="True"  
         VerticalScrollBarVisibility="Auto"></TextBox>