2015-01-18 3 views
1

Я только что раздробил проект Python, который был построен с помощью тестовой разработки. Я, конечно, вижу его ценность, и я с нетерпением жду возможности использовать его.Почему мой virtualenv не находит distutils.sysconfig?

Я установил все необходимые интерпретаторы Python (см. tox.ini), используя pyenv. Запуск tox -r, я в конечном итоге со следующей проблемой с 2.6 (у меня есть другие вопросы, но те, что я могу решить):

Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 20, in <module> 
    import distutils.sysconfig 
ImportError: No module named distutils.sysconfig 

ERROR: InvocationError: /home/wxl/.pyenv/shims/python2.6 /usr/lib/python2.7/dist-packages/virtualenv.py --setuptools --python /home/wxl/.pyenv/shims/python2.6 py26 (see /home/wxl/dev/git/blogofobe/.tox/py26/log/py26-0.log) 

Явно не проблема с кодом так много, как попытку вызвать virtualenv. След, похоже, предполагает, что он имеет какое-то отношение к отсутствующим модулям, но они должны быть в стандартной библиотеке, даже в версии 2.6.

Интересно, что если я запустил python2.6 и попробую import distutils.sysconfig, это терпит неудачу. С другой стороны, если я переключусь на эту версию с pyenv shell 2.6.9 и попробую то же самое, она отлично работает.

Что мне не хватает?

FWIW, я на Ubuntu 14.04 и:

$ python --version 
Python 2.7.6 

$ python2.7 --version 
Python 2.7.6 

$ python2.6 --version 
Python 2.6.9 

ответ

2

Похоже, вы используете Debian, предоставляемый virtualenv с питоном из pyenv. Это не может работать должным образом, поскольку Debian исправил site.py, distutils, sysconfig и, возможно, virtualenv, который вы пытаетесь использовать, чтобы сделать определенные предположения о макете файла установленного python. Распределенные пакеты являются явным индикатором патчей python, специфичных для Debian.

Эти допущения ломаются со стандартным питоном, который устанавливает pyenv. Решение состоит в том, чтобы установить virtualenv внутри pyenv питона, например:

/home/wxl/.pyenv/shims/pip-2.6 install virtualenv 

Если вы не имеете ПИО прокладку затем использовать это:

/home/wxl/.pyenv/shims/easy_install-2.6 pip virtualenv 

Не забудьте регенерировать регулировочные шайбы, запустив pyenv rehash

+0

Я в какой-то момент использовал deadsnakes ppa для установки некоторых интерпретаторов, прежде чем я получил раздражение. глядя на версию при запуске 'python2.6', это по умолчанию, тогда как' pyenv shell 2.6.9' дает «неизвестный», поэтому они явно разные версии. 'apt-get purge python2.6' разрешил эту проблему. теперь все хорошо, и «ток» счастлив. благодаря! – wxl

Смежные вопросы