ПРОЧИТАЙТЕ ПЕРШЕ https://packaging.python.org/en/latest/current.html
Рекомендації щодо інструменту встановлення
- Використовуйте pip для встановлення пакетів Python з PyPI.
- Використовуйте virtualenv або pyvenv для ізоляції залежностей, залежних від програми, від спільної інсталяції Python.
- Використовуйте піп-колесо, щоб створити кеш розподілу коліс, з метою> прискорення подальших інсталяцій.
- Якщо ви шукаєте управління повністю інтегрованими міжплатформенними стеками програмного забезпечення, розгляньте можливість побудови (переважно орієнтованої на спільноту веб-розробників) або Hashdist, або conda (обидва переважно орієнтовані на наукове співтовариство).
Рекомендації щодо пакувального інструменту
- Використовуйте setuptools для визначення проектів та створення вихідних розподілів.
- Для створення коліс використовуйте розширення bdist_wheel setuptools, доступне у проекті колеса. Це особливо корисно, якщо ваш проект містить двійкові розширення.
- Використовуйте шпагат для завантаження дистрибутивів до PyPI.
Цей запобіжник постарів, і справді існує план порятунку для світу упаковки пітонів, який називається
колеса шлях
Я цитую pythonwheels.com тут:
Що таке колеса?
Колеса - це новий стандарт розподілу пітонів і призначений замінити яйця. Підтримка пропонується в pip> = 1.4 та setuptools> = 0.8.
Переваги коліс
- Швидше встановлення для чистого python та власних розширень C.
- Уникає довільного виконання коду для встановлення. (Уникає setup.py)
- Для встановлення розширення C не потрібен компілятор у Windows або OS X.
- Дозволяє покращити кешування для тестування та постійної інтеграції.
- Створює файли .pyc як частину інсталяції, щоб переконатися, що вони відповідають використовуваному інтерпретатору python.
- Більш послідовне встановлення на платформах та машинах.
Повна історія правильної упаковки python (і про колеса) викладена на веб-сайті packaging.python.org
конда-спосіб
Для наукових обчислень (це також рекомендується на упаковці.python.org, див. Вище), я б розглянув можливість використання упаковки CONDA, яку можна розглядати як незалежну службу, побудовану поверх інструментів PyPI та pip. Він також чудово працює при створенні власної версії binstar, тому, я думаю, він може зробити трюк для складного управління корпоративними пакетами.
Conda можна встановити в папку користувача (без дозволів суперкористувача) і працює як магія
conda встановити
та потужне розширення віртуального середовища.
яйця спосіб
Ця опція була пов’язана з python-distribute.org і в більшій мірі застаріла (як і сайт), тому дозвольте мені вказати вам один із готових до використання, але компактних прикладів setup.py, який мені подобається:
- Дуже практичний приклад / реалізація змішувальних скриптів і окремих файлів пітона в setup.py дає тут
- Ще краще один з гіперопта
Ця цитата взята з керівництва щодо стану setup.py і досі застосовується:
- setup.py пішов!
- distutils пішли!
- розподілити пішло!
- pip і virtualenv тут, щоб залишитися!
- яйця ... пішли!
Я додаю ще один пункт (від мене)
Я б порекомендував трохи зрозуміти екосистему упаковки (з посібника, вказаного gotgenes), перш ніж намагатись безглуздо вставляти копії.
Більшість прикладів в Інтернеті починаються з
from distutils.core import setup
але це, наприклад, не підтримує створення python- яйця setup.py bdist_egg (а також деякі інші старі функції), які були доступні в
from setuptools import setup
І причина в тому, що вони застаріли .
Тепер за словами путівника
Увага
Будь ласка, використовуйте пакунок Distribute, а не пакет Setuptools, оскільки в цьому пакеті є проблеми, які можна і не усунути.
застарілі набори інструментів повинні бути замінені на distutils2 , який "буде частиною стандартної бібліотеки в Python 3.3". Треба сказати, що мені сподобалися сетуптоули та яйця, і я ще не повністю переконаний у зручності distutils2. Це вимагає
pip install Distutils2
і встановити
python -m distutils2.run install
PS
Упаковка ніколи не була тривіальною (про це дізнаються, намагаючись розробити нову), тому я припускаю, що багато чого пішло з причини. Я просто сподіваюся, цього разу це буде зроблено правильно.