Почему virtualenv наследует $ PYTHONPATH от моей оболочки?

Поэтому я перенес все свои инструменты с python2 на python3.4 на машине с Ubuntu 14.04. До сих пор я сделал следующее:

псевдоним Python для Python3 в моем Zshrc только для моего пользователяустановил pip3 в самой системе (но я все равно буду использовать virtualenvs для всего, поэтому я не буду его использовать)изменил мой псевдоним "сделать" в virtualenvwrappermkvirtualenv --python=/usr/bin/python3 («workon» вызывается ниже как «v»)

Теперь, что любопытно, и вы можете ясно видеть это ниже, запуск python3 из среды, активированной virtualenv, все еще наследует мою переменную $ PYTHONPATH, которая все еще настроена для всех моих путей python2. Это приводит к хаосу при установке / запуске программ в моем virtualenv, потому что пути python3 показывают ПОСЛЕ старых путей python2, поэтому модули python2 сначала импортируются в мои программы. Обнуление моего $ PYTHONPATH на '' перед запуском virtualenv исправляет это, и мои программы запускаются, как и ожидалось. Но мои вопросы:

Является ли это наследование $ PYTHONPATH в virtualenvs нормальным? Разве это не победит всю цель?Зачем устанавливать $ PYTHONPATH как env-var в оболочке, когда python уже обрабатывает свои собственные пути внутри?Я правильно использую $ PYTHONPATH? Должен ли я просто установить его в моем zshrc, чтобы он перечислял только мои личные дополнения ($ HOME / dev), а не избыточные местоположения / usr / local / lib /?Я могу очень легко экспортировать альтернативный путь python3 для использования с моим virtualenvs непосредственно перед их вызовом и сбросить их после завершения, но разве это лучший способ исправить это?
    ○ 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

    [email protected]:~/.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']
    >>>

    [email protected]:~/.virtualenvs
    ○ v py3venv
    (py3venv)
    [email protected]:~/.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)

Ответы на вопрос(3)

Ваш ответ на вопрос