2016-02-17 3 views
0

Мне было интересно, как выше «yum install package» & «python setup.py install» используются по-разному в CentOS? Я использовал yum install ... все время. Однако, когда я пытаюсь выполнить установку python setup.py, я всегда получаю: этот файл setup.py не может быть найден, даже если его путь отображается под echo $ PATH, если я не пытаюсь использовать его в его текущем каталоге или использовать абсолютный путь."yum install package" или "python setup.py install" в CentOS?

ответ

1

Когда вы наберете python setup.py install, ваша оболочка проверит вашу $ PATH для команды python и запустит ее. Затем python будет рассматривать свои аргументы, которые являются setup.py install. Он знает, что ему может быть присвоено имя скрипта, поэтому он ищет файл с именем setup.py, поэтому его можно запустить. Python не использует ваш PATH для поиска скриптов, поэтому он должен быть реальным путем к файлу. Если вы просто дадите ему имя setup.py, оно будет выглядеть только в вашем текущем каталоге.

Исходный каталог для модуля python не должен, в идеале, находиться в вашем $ PATH.

yum install - это команда, которая отправляется в репозиторий пакетов, загружает все файлы, необходимые для установки, а затем помещает их в нужное место. yum (и эквиваленты в других дистрибутивах, например apt для систем Debian) также будут извлекать и устанавливать любые другие необходимые вам пакеты, в том числе любые, которые не являются модулями python.

У Python есть менеджер пакетов. Вы также можете найти с помощью pip install modulename или pip install --user modulename (если у вас нет прав администратора) проще, чем загрузить и установить модуль вручную. Вы можете часто получать более свежие версии модулей таким образом, поскольку те, которые предоставляются операционной системой (через yum), как правило, являются более старыми и более стабильными версиями. Иногда модуль недоступен через yum. pip не может устанавливать дополнительные пакеты, которые не являются модулями python.

Если вы не пип уже (речь идет с Python3, но, возможно, потребуется установка отдельно для python2, в зависимости от того, как она была создана), то вы можете установить его, следуя инструкциям здесь: https://pip.pypa.io/en/stable/installing/

+1

Одна деталь, которую я хотел бы добавить в этот ответ, - это разработка различия между менеджером пакетов дистрибутива и Python. Вкратце, если у вас есть другие пакеты RPM (или '.deb' или что-то еще), которые зависят от конкретного дистрибутива, вы, вероятно, должны установить это, предпочитая модуль' pip'. (Я уверен, что на это был дан ответ много раз.) – tripleee

+0

Я думаю, что есть аргументы в обоих направлениях. Диспетчер системных пакетов, безусловно, проще, и возможность установки зависимостей, отличных от python, делает его привлекательным по эксплуатационным причинам. Использование pip & virtualenv при распространении программного обеспечения дает вам больше контроля над версиями и более переносимо. Соединение между этими двумя маршрутами должно использовать что-то вроде [fpm] (https://github.com/jordansissel/fpm/wiki), чтобы сделать .deb/.rpm из модулей pip и вашего собственного дерева каталогов. –

+1

Я добавил больше объяснений, следуя вашему предложению. –