Warum erbt virtualenv $ PYTHONPATH von meiner Shell?

Daher migriere ich alle meine Tools von python2 auf python3.4 auf einem Ubuntu 14.04-Computer. Bisher habe ich folgendes gemacht:

Alias Python zu Python3 in meinem Zshrc nur für meinen BenutzerPip3 auf dem System selbst installiert (aber ich werde einfach VirtualenVs für alles verwenden, damit ich es nicht wirklich benutze)änderte mein virtualenvwrapper "make" alias zumkvirtualenv --python=/usr/bin/python3 ('workon' wird unten als 'v' aufgerufen)

Jetzt ist es merkwürdig, und Sie sehen es deutlich unten, dass das Ausführen von python3 aus einer virtualenv-aktivierten Umgebung immer noch meinen $ PYTHONPATH erbt, der immer noch für alle meine python2-Pfade eingerichtet ist. Dies führt zu Problemen beim Installieren / Ausführen von Programmen in meiner virtuellen Umgebung, da die Python3-Pfade NACH den alten Python2-Pfaden angezeigt werden, sodass Python2-Module zuerst in meine Programme importiert werden. Das Nullen von $ PYTHONPATH auf '' vor dem Start von virtualenv behebt dies und meine Programme starten wie erwartet. Aber meine Fragen sind:

Ist diese Vererbung von $ PYTHONPATH in virtuellen Umgebungen normal? Besiegt das nicht den ganzen Zweck?Warum sollte $ PYTHONPATH in der Shell als env-var festgelegt werden, wenn Python seine eigenen Pfade bereits intern verarbeitet?Verwende ich $ PYTHONPATH richtig? Sollte ich es einfach in meinem 'zshrc' einstellen, um nur meine persönlichen Ergänzungen ($ HOME / dev) und nicht die redundanten '/ usr / local / lib /' Speicherorte aufzulisten?Ich kann sehr einfach einen alternativen Python3-Pfad für die Verwendung mit meinen virtuellen Envs exportieren, bevor ich sie aufrufe, und sie zurücksetzen, wenn ich fertig bin. Ist dies der beste Weg, dies zu beheben?
    ○ echo $PYTHONPATH
    /usr/local/lib/python2.7/site-packages:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/home/brian/dev

    brian@zeus:~/.virtualenvs
    ○ python2
    Python 2.7.6 (default, Mar 22 2014, 22:59:56)
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys, pprint
    >>> pprint.pprint(sys.path)
    ['',
     '/usr/local/lib/python2.7/dist-packages/pudb-2013.3.4-py2.7.egg',
     '/usr/local/lib/python2.7/dist-packages/Pygments-1.6-py2.7.egg',
     '/usr/local/lib/python2.7/dist-packages/urwid-1.1.1-py2.7-linux-x86_64.egg',
     '/usr/local/lib/python2.7/dist-packages/pythoscope-0.4.3-py2.7.egg',
     '/usr/local/lib/python2.7/site-packages',
     '/usr/local/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages',
     '/home/brian/dev',
     '/usr/lib/python2.7',
     '/usr/lib/python2.7/plat-x86_64-linux-gnu',
     '/usr/lib/python2.7/lib-tk',
     '/usr/lib/python2.7/lib-old',
     '/usr/lib/python2.7/lib-dynload',
     '/usr/lib/python2.7/dist-packages/PILcompat',
     '/usr/lib/python2.7/dist-packages/gst-0.10',
     '/usr/lib/python2.7/dist-packages/gtk-2.0',
     '/usr/lib/pymodules/python2.7',
     '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
     '/usr/lib/python2.7/dist-packages/ubuntuone-client',
     '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol',
     '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']
    >>>

    brian@zeus:~/.virtualenvs
    ○ v py3venv
    (py3venv)
    brian@zeus:~/.virtualenvs
    ○ python3
    Python 3.4.0 (default, Apr 11 2014, 13:05:11)
    [GCC 4.8.2] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys, pprint
    >>> pprint.pprint(sys.path)
    ['',
     '/usr/local/lib/python2.7/site-packages',
     '/usr/local/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages',
     '/home/brian/dev',
     '/home/brian/.virtualenvs/py3venv/lib/python3.4',
     '/home/brian/.virtualenvs/py3venv/lib/python3.4/plat-x86_64-linux-gnu',
     '/home/brian/.virtualenvs/py3venv/lib/python3.4/lib-dynload',
     '/usr/lib/python3.4',
     '/usr/lib/python3.4/plat-x86_64-linux-gnu',
     '/home/brian/.virtualenvs/py3venv/lib/python3.4/site-packages']
    >>>
    (py3venv)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage