7

Так что Python установлен, вероятно, хорошо. Или, возможно, это уже было здесь (я использую xubuntu 12.10).

Но сегодня я попытался установить networkx, используя pip:

pip install networkx

затем говорит, что у меня нет разрешения. Так что я sudo вышеупомянутой команды. Устанавливается без ошибок.

Теперь я не могу импортировать networkx без прав root. Я вполне уверен, что вам не нужно постоянно быть пользователем root для запуска сценариев Python. Это звучит действительно опасно.

easy_install говорит это:

easy_install networkx

ошибка: невозможно создать или удалить файлы в каталоге установки

При попытке добавить или удалить файлы в каталоге установки произошла следующая ошибка:

[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-13206.pth'

Указанный вами каталог установки (через --install-dir, --prefix или параметр по умолчанию distutils) был:

/usr/local/lib/python2.7/dist-packages/

Возможно, ваша учетная запись не имеет доступа для записи в этот каталог? Если установочный каталог является системным каталогом, вам может потребоваться войти в систему как администратор или "root". Если у вас нет административного доступа к этому компьютеру, вы можете выбрать другой каталог установки, предпочтительно тот, который указан в переменной среды PYTHONPATH.

Для получения информации о других вариантах вы можете обратиться к документации по адресу:

http://packages.python.org/distribute/easy_install.html

Пожалуйста, внесите соответствующие изменения в вашу систему и попробуйте снова.

Я также попытался установить в ~/.networkx (подпапку, которую я создал как не-root), и я получаю ту же ошибку прав доступа. Я chmod 777 /usr/local/lib/python2.7/dist-packages и пытаюсь установить, та же ошибка прав доступа.

pip uninstall и sudo easy_install вызывают те же проблемы, что и установка pip.

что, кстати, это:

python t1.py

Traceback (последний вызов был последним): файл "t1.py", строка 3, в импорте networkx как nx ImportError: нет модуля с именем networkx

sudo python t1.py

H: 10 ... больше вещей, которые указывают на его импорт и работают нормально ...

Ясно, что в какой-то момент я был просто новичком в установке Python или ... где-то еще. Я не знаю где, это может быть где угодно. Кто-нибудь сталкивался с этим раньше или достаточно хитроумно, чтобы знать, что происходит? Мне нужна твоя помощь. Приветствия.

РЕДАКТИРОВАТЬ: (Подробнее о Radoo)

sean@potatocake:~$./sh.sh
User is not part of the group which has access to that directory.
/usr/local/lib/python2.7/dist-packages needs access.

sean@potatocake:~$ll /usr/local/lib/
total 12
drwxrwxr-x 3 root root  4096 Mar 28 19:00 perl
drwxrwsr-x 4 root staff 4096 Oct 18 04:07 python2.7
drwxrwsr-x 3 root staff 4096 Oct 18 04:05 python3.2

sean@potatocake:~$ll /usr/local/lib/python2.7/
total 8
drwxrwsr-x 32 root staff 4096 Mar 28 23:13 dist-packages
drwxrwsr-x  2 root staff 4096 Oct 18 04:07 site-packages

примечание: я chmod'd это назад к 775, когда пункт не sudo все еще не работал.

sean@potatocake:~$groups
sean adm cdrom sudo dip plugdev lpadmin sambashare

sean@potatocake:~$sudo useradd -G staff sean
useradd: user 'sean' already exists

3 ответа3

0

Я определенно не эксперт в этом, но вот мои мысли.

Хорошо, если ваша установка установлена как root, поэтому никто не может изменять ваши файлы и конфигурации, кроме root и sudoers. Так что я думаю, что ваша установка в порядке. Если вы хотите установить новый пакет, вы должны быть пользователем root.

Что касается ошибки разрешения, вы сказали, что сделали это: chmod 777 /usr/local/lib/python2.7/dist-packages . Ну, это предлагает доступ только к этому каталогу в конце. У вас могут быть некоторые родительские каталоги, которые могут не иметь прав доступа (прав на выполнение), что может привести к вашей проблеме.

Чтобы проверить разрешения для текущего пользователя во всех этих каталогах, вам нужно сделать что-то вроде этого (я думаю, вы можете найти лучшую версию, но в любом случае) для каждого из них:

dir="<directory_path>"
user_groups=$(groups <user>)
dir_group=$(stat "$dir" | cut -d' ' -f6)

if ! [[ "$dir_group" =~ "\\b$user_groups\\b" ]]; then printf "User is not part of the group which has access to that directory.\n"; fi

dir_access=$(stat "$dir" | cut -d' ' -f3)
group_dir_exec_access=${dir_access:6:1}

if [ "$group_dir_exec_access" != "x" ]; then printf "This dir needs access.\n"; <add some sudo chmod stuff to give access to group> fi

Надеюсь, это поможет.

0

Лучше не пытаться переопределить системную версию Python. Эта версия существует для системы. Настройка на системный Python может вызвать конфликты или даже открыть вашу систему для уязвимостей. Кроме того, обновления системы, вероятно, вернут ваши настройки.

Лучше всего использовать собственную версию Python, что можно сделать с помощью таких инструментов, как virtualenv или pyenv.

-2

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

  1. Изменить каталог на Python2.7
  2. sudo chmod 777 dist-packages
  3. sudo chmod 777 etc
  4. а затем python2.7 setup.py install

Это сработало для меня!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .