Проблема с virtualenv в Mac OS X
Я установил 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
Как я могу это исправить?
Спасибо.
Ответы
Ответ 1
Если у вас по-прежнему возникают проблемы с virtualenv
, вы можете попробовать pythonbrew. Это альтернативное решение той же проблемы. Это больше похоже на Ruby rvm: он создает и создает весь экземпляр Python под $HOME/.pythonbrew
, а затем устанавливает некоторые bash функции, которые позволяют легко переключаться между версиями. Где virtualenv
затеняет системную версию Python, используя символические ссылки как часть своего решения, pythonbrew
строит полностью автономные установки Python.
Я использовал virtualenv
годами. Это достойное решение, но я переключился на pythonbrew
в последнее время. Наличие полностью автономных экземпляров Python означает, что установка нового занимает некоторое время (поскольку pythonbrew
фактически компилирует Python с нуля), но автономный характер каждой установки обращается ко мне. И диск дешев.
Ответ 2
На всякий случай кто-то все еще ищет ответ.
Я столкнулся с этой же проблемой только сегодня и понял, что, поскольку у меня уже установлен Anaconda, я не должен был использовать pip install virtualenv
для установки виртуальной среды, так как это дало бы мне сообщение об ошибке при попытке инициировать его позже. Вместо этого я попробовал conda install virtualenv
, затем ввел virtualenv env_mysite
и проблема была решена.
Ответ 3
Если кто-то в будущем столкнется с этой проблемой, это вызвано тем, что ваш дистрибутив Python по умолчанию является conda. У Conda есть собственный виртуальный env настроить процесс, но если у вас есть дистрибутив panda на conda и все еще хотите использовать virtualenv здесь, то как:
-
Найдите другой дистрибутив python на вашем компьютере: ls -ls /usr/bin/python*
-
Обратите внимание на доступную версию python, которая не является conda и запускает код ниже (примечание для python 3 и выше вам нужно сначала обновить virtualenv): virtualenv -p python2.7(or your python version) flaskapp
Ответ 4
Я сам столкнулся с этой проблемой. Я записал инструкции в README, которые я вставил ниже....
Я нашел, что есть две вещи, которые работают:
- Убедитесь, что вы используете последнюю версию virtualenv (1.5.1 из этого файла)
-
Если вы используете несистемный Python в качестве своего стандартного Python (на котором должен проверяться python) Настройте его с помощью System.
Вместо virtualenv thing
используйте /usr/bin/python2.6 PATH/TO/VIRTUALENV thing
(или что-то еще which
python
, возвращенное вам) - вот что он сделал для меня, когда я столкнулся с этой проблемой)
Ответ 5
Как упоминалось в @RyanWilcox, вы можете непреднамеренно указать virtualenv
на неправильную установку Python. Virtualenv поставляется с флагом -p
, чтобы указать, какой интерпретатор использовать.
В моем случае
virtualenv test_env
сбросила ту же ошибку, что и ваша, а
virtualenv -p python test_env
работал отлично.
Если вы вызываете virtualenv -h
, документация для флага -p
сообщит вам, какой питон он считает, что он должен использовать; если он выглядит неуклюжим, попробуйте пройти -p python
. Для справки, я на virtualenv 1.11.6.
Ответ 6
У меня была такая же проблема, и, как я вижу сейчас, это было вызвано запутанной установкой Python. У меня есть OS X, установленный более года с тех пор, как я купил новый ноутбук, и я уже несколько раз устанавливал и переустанавливал Python с использованием разных источников (официальные двоичные файлы, homebrew, официальные двоичные файлы + ручные настройки, как описано здесь). Не спрашивайте меня, почему я это сделал, я всего лишь несчастный новичок, считающий, что все будет исправлено после переустановки.
Итак, у меня было несколько разных Pythons, установленных здесь и там, а также множество жестких ссылок, указывающих на них непоследовательно. В конце концов, я устал от всех, и переустановил OS X тщательно очистил систему от всех найденных Python с помощью утилиты 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
, и создавать виртуальные среды для всех моих проектов, поэтому мне не нужно удалять важные библиотеки. Если вы не хотите удалять все, по-прежнему пытайтесь понять, являются ли ваши Pythons, какие ссылки указывают на них и откуда. Тогда подумайте, что может вызвать проблему и исправить ее.
Ответ 7
Я столкнулся с вариацией этой "неработающей" ошибки.
Я пытался создать среду в папке, которая включала путь ".../Programming/Developing...", который на самом деле "/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 не было, что я ожидаю (активировать и т.д.).
Ответ 8
Вышеупомянутые решения не удались для меня, но следующие работы:
python3 -m venv --without-pip <ENVIRONMENT_NAME>
. <ENVIRONMENT_NAME>/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python
deactivate
Это взломанный, но да, основная проблема действительно выглядела как пип.
Ответ 9
Вкл. на OSX 10.6.8 leopard
, после того, как "обновил" до Lion, затем снова понизился (ouch - AVOID!), я прошел через Wolf Paulus несколько месяцев назад, совершенно не знающий python. Удалено python 2.7
и "замените" его на 3.something
. Моя FTP-программа перестала работать (Fetch), и кто знает, что еще полагается на Python 2.7. Поэтому в этот момент я загрузил последнюю версию 2.7
с python.org, и он установил меня и запускал - пока я не попытался использовать virtualenv
.
То, что, похоже, сработало для меня на этот раз, полностью удалило Python 2.7 с помощью этого кода:
sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7
удаление всех ссылок с помощью этого кода:
sudo rm /usr/bin/pydoc
sudo rm /usr/bin/python
sudo rm /usr/bin/pythonw
sudo rm /usr/bin/python-config
Я пытался установить python с помощью homebrew
, но, видимо, он не будет работать, если не будет установлен все XTools, чего я избегаю, поскольку версия XTools, совместимая с 10.6
, является древней и 4 ГБ, и в основном все Мне нужен GCC, компилятор, который вы можете получить здесь.
Итак, я только что установил последнюю версию из python.org.
Затем пришлось переустановить easy_install, pip, virtualenv.
Определенно интересно, когда придет время для нового ноутбука, но есть много чего сказать о покупке меньше аппаратных средств (рабский труд, неэтичная добыча и т.д.).
Ответ 10
Я сделал следующие шаги, чтобы заставить virtualenv работать:
Обновить virtualenv следующим образом:
==> sudo pip install --upgrade virtualenv
Инициализировать python3 virtualenv:
==> virtualenv -p python3 venv
Ответ 11
Откройте терминал и введите /Library/Frameworks/Python.framework/Versions/
тогда введите ls /Library/Frameworks/Python.framework/Versions/2.7/bin/
, если вы используете Python2 (или любое другое).
Измените ~/.bash_profile и добавьте следующую строку:
export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin/
cat ~/.bash_profile
В моем случае содержимое ~/.bash_profile выглядит следующим образом:
export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin/
Теперь команда virtualenv должна работать.
Ответ 12
У меня была эта же проблема, и я могу подтвердить, что проблема связана с устаревшим файлом virtualenv.py
.
Не нужно было делать целую install -upgrade.
Замените файл virtualenv.py
самой последней версией.
Ответ 13
У меня также была эта проблема, и я попробовал следующий метод, который работал у меня:
conda install virtualenv
virtualenv --system-site-packages /anaconda/envs/tensorflow
(здесь envs
хранит все виртуальные среды, созданные пользователем)
source /anaconda/envs/tensorflow/bin/activate
Надеюсь, что это будет полезно.
Ответ 14
У меня такая же проблема, и я обнаружил, что это происходит, когда вы не укажете имя исполняемого файла python должным образом. Итак, для python 2x, например:
virtualenv --system-site-packages -p python mysite
Но для python 3.6 вам нужно указать исполняемое имя, например python3.6
virtualenv --system-site-packages -p python3.6 mysite