2014-01-10 4 views
1

Чтобы предисловие, я в настоящее время запускаю OSX 10.9.1 с Python 2.7.easy_install и права доступа к файлам

Я хотел был бы установить пакеты Python используя easy_install (в этом примере, pip). Во-первых, я стараюсь:

easy_install pip

И тогда я получаю ошибку, которая говорит, что у меня нет доступа на запись в каталог site-packages. Нет проблем:

sudo easy_install pip

Все не загружает нормально. Следующий пример показывает сеанс Bash у меня после установки pip:

$ pip 
-bash: /usr/local/bin/pip: Permission denied 
$ cd /usr/local/bin/pip 
$ ls -l 

... 
-rwx------ 1 root admin  275 Jan 10 11:05 pip 
... 

$ chmod 754 pip 
chmod: Unable to change file mode on pip: Operation not permitted 
$ sudo chmod 754 pip 
$ pip 
Traceback (most recent call last): 
    File "./pip", line 5, in <module> 
    from pkg_resources import load_entry_point 
    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 3007, in <module> 

    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 728, in require 
    requirements specified when this environment was created, or False 
    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 626, in resolve 

pkg_resources.DistributionNotFound: pip==1.5 

Итак, может быть, некоторые из разрешений еще перепутались. Вот что Finder показывает мне, когда я осматриваю /Library/Python/2.7/site-packages/:

No permission

А вот что ls -l возвращается при просмотре этого же каталога:

... 
drwx------ 4 root wheel  136 Jan 10 11:24 pip-1.5-py2.7.egg 
... 

Хорошо, так что я, очевидно, не имеет разрешения на использование pip все еще, потому что у меня нет разрешения на выполнение в архиве. Как насчет:

$ chmod 754 pip-1.5-py2.7.egg 
chmod: Unable to change file mode on pip-1.5-py2.7.egg/: Operation not permitted 
$ sudo chmod 754 pip-1.5-py2.7.egg 
$ pip 
Traceback (most recent call last): 
    File "/usr/local/bin/pip", line 9, in <module> 
    load_entry_point('pip==1.5', 'console_scripts', 'pip')() 
    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 378, in load_entry_point 
    def get_resource_stream(manager, resource_name): 
    File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 2565, in load_entry_point 
    section = line[1:-1].strip() 
ImportError: Entry point ('console_scripts', 'pip') not found 

Моя гипотеза состоит в том, что все разрешения ввернуты, потому что я использовал sudo и теперь я просто гоняться вокруг разрешения. Однако это может быть неправильно. Я никогда не помню эту проблему перед обновлением до OSX 10.9.

Мои вопросы: делают ли системы Unix всегда это с sudo, даже если я администратор компьютера? Есть ли способ для меня постоянно исправлять это, чтобы у меня действительно было разрешение на запуск установленных пакетов? Как вы думаете, где-то в моей системе что-то неправильно?

+1

номер причины 273 не обновлять до Mavericks ... – MattDMo

+1

@Thanizer, вы запускаете «дисковая утилита» и исправлены разрешения? это может быть хорошим местом для начала. также chmod 754 не собирается сокращать его, вам нужно использовать 755 и для этого есть 'owner root',' group wheel'. –

+0

@ I'L'I, я просто отремонтировал разрешения безрезультатно. Прямо сейчас я просто использую формулу Python для Homebrew, и все работает нормально. Мне все же хотелось бы знать, почему я не могу использовать собственный скрипт 'easy_install' OSX, но без проблем с разрешениями. – Thanizer

ответ

1

Ваша гипотеза верна для всех разрешений are привинчена, потому что вы использовали sudo. Начните с нарушения этой привычки использовать sudo для устранения проблем. Вы должны думать так же, как долго и упорно о делать вещи с sudo, как вы войти в систему как суперпользователь. Если ваше отношение «не проблема: sudo ...», вы (в конце концов) находитесь в мире боли. Каждый раз, когда вы используете sudo, вы делаете еще одно изменение способа выхода OSX из коробки.

Далее, попробуйте поместить все в версию python операционной системы. Я бы порекомендовал сначала очистить ваш/usr/local, хотя это может потребовать многого.

Затем brew install python - получите pristine python. Хорошо. Вы уже это сделали.

which pip - убедитесь, что вы используете пипетку, только что установленную в/usr/local; если не настроить файл ~/.bashrc при необходимости.

Вперед brew install virtualenv и brew install virtualenvwrapper - сделайте это, когда вы pip install что-то, чтобы поддержать проект, который влияет только на один проект. Пока вы на нем добавьте export PIP_REQUIRE_VIRTUALENV=true в ваш ~/.bashrc, чтобы вы не забыли и не испортились в будущем.

Теперь ознакомьтесь с virtualenv и начните понимать истинные зависимости ваших проектов и прекратите конфликты во время конфликта, вызванные мешающими друг другу требованиями и общим битом, которые вызовет вас неизбирательное использование sudo.

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