brew install python для scrapy — проблемы с символической ссылкой и разрешениями

Я следую руководству по установке Scrapy, чтобы установить новую копию python (2.7.11), несмотря на то, что у меня уже есть 2.6, 2.7.10 и 3.4.0. Установка шла нормально до последнего шага с этими ошибками

==> Pouring python-2.7.11.el_capitan.bottle.2.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/2to3
Target /usr/local/bin/2to3
already exists. You may want to remove it:
  rm '/usr/local/bin/2to3'

To force the link and overwrite all conflicting files:
  brew link --overwrite python

To list all files that would be deleted:
  brew link --overwrite --dry-run python

Possible conflicting files are:
/usr/local/bin/2to3 -> /Library/Frameworks/Python.framework/Versions/3.4/bin/2to3
Error: Permission denied - /usr/local/Frameworks

Кроме того

ls -l /usr/local/Frameworks
ls: /usr/local/Frameworks: No such file or directory

а также

ls -l /usr/local/bin/2to3
lrwxr-xr-x  1 root  wheel  66  7 Apr  2014 /usr/local/bin/2to3 -> ../../../Library/Frameworks/Python.framework/Versions/3.4/bin/2to3

Мои вопросы:

1) я должен был сделать sudo brew install python вместо brew install python? Надеюсь, мне не нужно удалять 2.7.11 и начинать заново.

2) Если я сделаю два шага, которые они предлагают rm '/usr/local/bin/2to3' и brew link --overwrite python, смогу ли я запустить python 3.4.0 для целей, отличных от Scrapy? Предположительно, я должен сделать это с sudo?

3) Если бы я сделал № 2, проблема с правами на /usr/local/Frameworks разрешилась бы сама собой или мне нужно было бы сделать что-то еще?

Следовать за:

Предложение настроить virtualenv, вероятно, хорошее. Но я полагаю, что мне, вероятно, нужно сначала завершить установку.

Сейчас я удалил 2to3. Я также пытался запустить brew link --overwrite python с sudo, но он вернулся с этим трусливым отказом от sudo brew link msg, поэтому я просто пошел дальше и сделал это без sudo.

Но варить ссылку по-прежнему не удалось на разрешениях

brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.11... Error: Permission denied - /usr/local/Frameworks

Однако

ls -l /usr/local/Frameworks
ls: /usr/local/Frameworks: No such file or directory

Более того, в /usr/local/bin много связанных с python ссылок на существующую версию 3.4.0 (эти ссылки принадлежат пользователю root) и новую версию 2.7.11 (принадлежащую мне).

Что мне теперь делать? Большое спасибо.


person rockhammer    schedule 27.05.2016    source источник
comment
Я бы рекомендовал использовать виртуальную среду и использовать любую конфигурацию, которую вы хотите   -  person eLRuLL    schedule 27.05.2016
comment
Спасибо, eLRuLL. Ваше предложение настроить virtualenv кажется логичным. Но разве мне не нужно сначала завершить установку? Я попытался выполнить шаги, предложенные в исходном errmsgs, но он все равно не смог выполнить связывание из-за разрешений на несуществующий файл/папку!   -  person rockhammer    schedule 28.05.2016


Ответы (2)


Основываясь на многочисленных сообщениях с различных форумов, наиболее рекомендуемой практикой является установка доморощенными всеми версиями python, которые вам нужны, оставить только связанный с OSX питон (и неиспользуемый) и удалить все другие версии, потому что доморощенный не обязательно хорошо с ними работает.

Согласно этому, доморощенный должен уметь работать с сосуществующими питонами 2.7 и 3.x. Поэтому я последовал этому совету, чтобы удалить версию 3.4, которую я установил ранее, непосредственно с python.org.

Далее я следовал предоставленным рекомендациям brew doctor, которые были очень похожи на шаги, упомянутые в ссылке выше, о том, как удалить недоморощенный питон. Впоследствии

brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.11... 5 symlinks created

а также

brew doctor
Your system is ready to brew.

Итак, похоже, что 2.7.11, установленная доморощенным, наконец-то завершена.

Теперь я буду использовать доморощенный, чтобы установить последнюю версию 3.x и обновить этот пост. Если это удастся, я дополнительно настрою virtualenv для установки Scrapy.

Следовать за:

brew install python3 успешно установил Python 3.5.1

pip install virtualenv успешно установил virtualenv 15.0.1

virtualenv -p /usr/local/bin/python2.7 Scrapy успешно настроил виртуальную среду "Scrapy" с помощью 2.7

source Scrapy/bin/activate запустил виртуальную среду "Scrapy"

pip install lxml успешно установил lxml 3.6.0

pip install Scrapy успешно установил Scrapy 1.1.0

pip freeze > Scrapy/requirements.txt созданный список зависимостей

deactivate вышел из виртуальной среды "Scrapy"

Завтра попробуем учебник Scrapy, чтобы увидеть, действительно ли все это работает.

person rockhammer    schedule 28.05.2016
comment
Вам также может понадобиться сделать следующее: sudo mkdir /usr/local/Frameworks sudo chown foo:bar /usr/local/Frameworks chmod 755 /usr/local/Frameworks brew link --overwrite python - person bmoran; 05.01.2017

Я только что сам столкнулся с подобной проблемой, вот что я сделал, и я смог сварить ссылку на python:

sudo mkdir /usr/local/Frameworks
sudo chown {your username}:{your usergroup} /usr/local/Frameworks/
person Kevin Postlewaite    schedule 23.05.2017