Як вручну встановити модуль pypi без pip / easy_install?


91

Я хочу використовувати модуль gntp для відображення повідомлень, схожих на тостер, для програмного забезпечення C / C ++. Я хочу упакувати всі залежності, щоб програмне забезпечення було самостійно виконане на іншому комп'ютері.

Модуль gntp доступний лише через інсталятор pip, який не можна використовувати (комп'ютер, на якому запущено програмне забезпечення, не має підключення до Інтернету): як я можу встановити його з джерел?

Я вважаю за краще не змушувати користувача встановлювати easy_install / pip і вручну додавати шлях pip до% PATH.

PS: Я використовую Python 2.7 на машині Windows.


4
Можливо, з python setup.py install?
Ніколас

Відповіді:


149
  1. Завантажте пакет
  2. розпакуйте його, якщо він застібається на блискавку
  3. cd в каталог, що містить setup.py
  4. Якщо є будь-які вказівки щодо встановлення, що містяться у відповідній до цього документації, прочитайте та виконуйте вказівки Інакше
  5. введіть python setup.py install

Для кроку 5 вам можуть знадобитися права адміністратора. Отже, що ви тут робите, залежить від вашої операційної системи. Наприклад, в Ubuntu ви б сказалиsudo python setup.py install

EDIT - завдяки Кватфорду (див. Перший коментар)

Щоб уникнути потреби в правах адміністратора під час кроку 5 вище, ви можете скористатися прапором --user. Таким чином ви можете встановити пакет лише для поточного користувача.

У документах сказано:

Файли будуть встановлені в підкаталоги сайту.USER_BASE (надалі - як база даних користувача). Ця схема встановлює чисті модулі Python та модулі розширення там же (також відомий як site.USER_SITE). Ось значення для UNIX, включаючи Mac OS X:

Детальнішу інформацію можна знайти тут: http://docs.python.org/2.7/install/index.html


8
pip / easy_install / setup.py зазвичай приймають --userпрапор для встановлення пакету лише для поточного користувача, як правило, в обхід потреби адміністратора.
kwatford

3
Чомусь я бачу це: ImportError: No module named 'setuptools'я виявив, що тут: pypi.python.org/pypi/setuptools/1.1.6. Хоча встановлення дало мені помилки винятків, тепер модуль websocket взагалі не працює, я думаю, що дам на Python 3.3 у Windows на даний момент.
SSH цього

2
@SSHThis: У мене однакові результати з пакетом, інсталяцію якого я намагаюся заробити. Звертаючись до багатослівності, виходить "Оскільки цей дистрибутив був встановлений - багатоверсійна [...]", що є і помилковим (тут встановлена ​​лише одна версія python), і непомітним (із задокументованим "python -m easy_install [...] "взагалі не допомагає), я з вами - Python непридатний для використання.
Ерік Тауерс

1
Я гадаю, pip install target-packageяк правило, автоматично встановлює / оновлює інші пакунки, від яких залежить цільовий пакет. Це трапляється у випадку підходу setup.py? Або zip пакету також містить усі залежності? І ви маєте на увазі, що ми повинні завантажувати колеса пітона замість блискавок? Як ці для numpy? Якщо ні, де знайти блискавки (наприклад, для numpy)? (Я все прошу, тому що я змушений працювати за корпоративним проксі, де мені доводиться боротися за кожне завантаження: '()
Mahesha999,

3
ви не можете дійсно завантажувати пакети в автономному режимі ... Якщо ви хочете завантажувати їх поза межами вашої безглуздої робочої мережі, я б, мабуть, зробив наступне: 1. створити virtualenv. 2. python setup.py installабо pip installвсі речі, які вам знадобляться. 3. запустіть pip freeze, щоб отримати список усіх пакетів та всіх версій. Ви можете зберегти це у файлі (традиційно званому requirements.txt '. Тоді, якщо ви хочете завантажити пакети, щоб скопіювати їх на різні машини, якими ви можете користуватися pip download [options] -r <requirements file>. Це не найефективніший спосіб. Але простий
Шина

5

Для подальшого пояснення відповіді Шини мені потрібно було встановити інструменти налаштування як залежність іншого інструменту, наприклад more-itertools .

Завантажити

Натисніть Clone or downloadкнопку та оберіть свій метод. Я помістив їх у dev/py/libsкаталог у своєму домашньому каталозі користувача. Немає значення, де вони збережені, тому що їх там не встановлять.

Встановлення інструментів налаштування

Вам потрібно буде запустити наступне всередині каталогу інструментів налаштування .

python bootstrap.py
python setup.py install

Встановлення загальних залежностей

Тепер ви можете перейти до більш-itertools direcotry і встановити його як зазвичай.

  1. Завантажте пакет
  2. Розпакуйте його, якщо це архів
  3. Перейдіть ( cd ...) до каталогу, що міститьsetup.py
  4. Якщо в документації, що міститься в цьому документі, є будь-які вказівки щодо встановлення, прочитайте та дотримуйтесь інструкцій ІНШЕ
  5. Введіть: python setup.py install

2

Незважаючи на те , що відповідь Шини робить свою справу, pipце не зупиняється лише на цьому.

З відповіді Шини:

  1. Завантажте пакет
  2. розпакуйте його, якщо він застібається на блискавку
  3. cd в каталог, що містить setup.py
  4. Якщо в інструкції, яка міститься в цій інструкції, є будь-які вказівки щодо встановлення, прочитайте та дотримуйтесь інструкцій ІНШЕ
  5. введіть python setup.py install

В кінці цього ви отримаєте .eggфайл у site-packages. Як користувач, це не повинно вас турбувати. Ви можете importі uninstallпакет нормально. Однак, якщо ви хочете зробити це pipяк слід, ви можете продовжити наступні кроки.

У site-packagesкаталозі

  1. unzip <.egg file>
  2. перейменувати EGG-INFOкаталог як<pkg>-<version>.dist-info
  3. Тепер ви побачите окремий каталог з назвою пакету, <pkg-directory>
  4. find <pkg-directory> > <pkg>-<version>.dist-info/RECORD
  5. find <pkg>-<version>.dist-info >> <pkg>-<version>.dist-info/RECORD. >>, Щоб запобігти перезапис.

Тепер, переглянувши site-packagesкаталог, ви ніколи не зрозумієте, що встановили без нього pip. Щоб uninstall, просто зробіть звичайне pip uninstall <pkg>.


Що робити, якщо я встановлюю пакет із сховища Anaconda, і він не має setup.pyфайлу?
посоромляться
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.