Проблема с virtualenv в Mac OS X - PullRequest
41 голосов
/ 06 мая 2011

Я установил virtualenv через pip и получаю эту ошибку после создания новой среды:

selenium:~ auser$ virtualenv new  
New python executable in new/bin/python  
ERROR: The executable new/bin/python is not functioning  
ERROR: It thinks sys.prefix is u'/System/Library/Frameworks/Python.framework/    Versions/2.6' (should be '/Users/user/new')  
ERROR: virtualenv is not compatible with this system or executable  

В моей среде:

PYTHONPATH=/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages  
PATH=/System/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin  

Как я могу восстановитьэто?

Спасибо.

Ответы [ 14 ]

109 голосов
/ 03 марта 2017

На всякий случай, если кто-то все еще ищет ответ.

Я столкнулся с этой же проблемой только сегодня и понял, так как у меня уже установлена ​​Anaconda, я не должен был использовать pip install virtualenv для установки виртуальной среды какэто даст мне сообщение об ошибке при попытке инициировать его позже.Вместо этого я попытался conda install virtualenv, затем ввел virtualenv env_mysite и проблема решена.

6 голосов
/ 06 февраля 2017

В случае, если кто-то в будущем столкнется с этой проблемой - это вызвано тем, что ваш дистрибутив Python по умолчанию является conda.У Conda есть собственный виртуальный env процесс настройки , но если у вас есть дистрибутив python для conda и вы все еще хотите использовать virtualenv, то вот как:

  1. Найдите другой дистрибутив pythonна вашем компьютере: ls -ls /usr/bin/python*

  2. Обратите внимание на доступную версию Python, которая не является conda, и запустите приведенный ниже код (обратите внимание, что для Python 3 и выше вы должны сначала обновить virtualenv):virtualenv -p python2.7(or your python version) flaskapp

5 голосов
/ 22 июля 2014

Как уже упоминалось @RyanWilcox, вы можете непреднамеренно указать virtualenv на неправильную установку Python.Virtualenv поставляется с флагом -p, позволяющим указать, какой интерпретатор использовать.

В моем случае

virtualenv test_env

выдало ту же ошибку, что и ваш, тогда как

virtualenv -p python test_env

работал отлично.

Если вы позвоните virtualenv -h, документация для флага -p скажет вам, какой питон, по его мнению, он должен использовать;если это выглядит странно, попробуйте передать -p python.Для справки я на virtualenv 1.11.6.

4 голосов
/ 06 мая 2011

Я сам столкнулся с этой проблемой. Я записал инструкции в README, которые я вставил ниже ....

Я обнаружил, что работают две вещи:

  1. Убедитесь, что вы используете последнюю версию virtualenv (1.5.1, из этой статьи)
  2. Если вы используете не системный Python в качестве стандартного Python (какой Python проверять), принудительно используйте предоставленный System.

    Вместо virtualenv thing используйте /usr/bin/python2.6 PATH/TO/VIRTUALENV thing (или что-то еще which python, возвращенное вам - это то, что он сделал для меня, когда столкнулся с этой проблемой)

3 голосов
/ 10 апреля 2013

У меня была такая же проблема, и, как я вижу сейчас, она была вызвана грязной установкой Python. У меня установлена ​​OS X более года с тех пор, как я купил новый ноутбук, и я уже несколько раз устанавливал и переустанавливал Python, используя разные источники (официальные двоичные файлы, homebrew, официальные двоичные файлы + ручные настройки, как описано здесь ). Не спрашивайте меня, почему я это сделал, я просто несчастный новичок, верящий, что все будет исправлено после переустановки.

Итак, у меня было несколько разных Pythons, установленных здесь и там, а также множество жестких ссылок, указывающих на них непоследовательно. В конце концов мне все это надоело, и переустановил OS X , тщательно очистив систему от всех найденных Питонов, используя утилиту find. Кроме того, я удалил все ссылки, указывающие на любой Python отовсюду. Затем я установил свежий Python, используя homebrew, установил virtualenv, и теперь все работает как чудо.

Итак, мой рецепт:

sudo find / -iname "python*" > python.log

Затем проанализируйте этот файл, удалите и отсоедините все, что связано с нужной вам версией Python, переустановите его (я сделал это с помощью homebrew, возможно, официальная установка также подойдет) и наслаждайтесь. Убедитесь, что вы связали все, что связано с Python от /usr/bin и /usr/local/bin, а также удалили все экземпляры Frameworks/Python.framework/Versions/<Your.Version> в /Library и /System/Library.

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

1 голос
/ 30 декабря 2017

У меня возникла та же проблема, и я обнаружил, что это происходит, когда вы не указываете имя исполняемого файла Python правильно.Так, для python 2x, например:

virtualenv --system-site-packages -p python mysite

Но для python 3.6 вам необходимо указать имя исполняемого файла, например python3.6

virtualenv --system-site-packages -p python3.6 mysite

1 голос
/ 13 января 2017

Вышеприведенные решения не дали мне результата, но сработало следующее:

python3 -m venv --without-pip <ENVIRONMENT_NAME>
. <ENVIRONMENT_NAME>/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python
deactivate

Хак, но да, основная проблема действительно казалась пипской.

1 голос
/ 02 августа 2014

Я столкнулся с вариантом этой "не функционирующей" ошибки. Я пытался создать среду в папке, включающей путь "... / Программирование / Разработка ...", который на самом деле "/ Users / eric / Documents / Programming: Developing /"

и получил эту ошибку:

ImportError: No module named site
ERROR: The executable env/bin/python2.7 is not functioning
ERROR: It thinks sys.prefix is u'/Users/eric/Documents/Programming:Developing/heroku' (should be u'/Users/eric/Documents/Programming:Developing/heroku/env')
ERROR: virtualenv is not compatible with this system or executable

Я пробовал то же самое в другой папке, и она работала нормально, без ошибок, и env / bin имеет то, что я ожидаю (активировать и т. Д.).

0 голосов
/ 04 декабря 2017

У меня также была эта проблема, и я попробовал следующий метод, который работал для меня:

conda install virtualenv

virtualenv --system-site-packages /anaconda/envs/tensorflow (здесь envs сохраняет все виртуальные среды, созданные пользователем)

source /anaconda/envs/tensorflow/bin/activate

Надеюсь, это полезно.

0 голосов
/ 01 июня 2017

У меня была такая же проблема, и я могу подтвердить, что проблема была с устаревшим virtualenv.py файлом.

Нет необходимости делать целую установку --upgrade .

Достаточно заменить файл virtualenv.py самой последней версией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...