ПРОЧИТАЙТЕ ЭТО Вначале https://packaging.python.org/en/latest/current.html
Рекомендации по установке
- Используйте pip для установки пакетов Python из PyPI.
- Используйте virtualenv или pyvenv, чтобы изолировать зависимости приложения от общей установки Python.
- Используйте pip wheel для создания кеша распределений wheel, чтобы> ускорить последующие установки.
- Если вы ищете управление полностью интегрированными кросс-платформенными стеками программного обеспечения, подумайте о buildout (в первую очередь ориентированном на сообщество веб-разработчиков), Hashdist или conda (оба в первую очередь ориентированы на научное сообщество).
Рекомендации по упаковочным инструментам
- Используйте setuptools для определения проектов и создания исходных дистрибутивов.
- Используйте расширение bdist_wheel setuptools, доступное в проекте wheel, для создания колес. Это особенно полезно, если ваш проект содержит двоичные расширения.
- Используйте шпагат для загрузки дистрибутивов в PyPI.
Этот anwser устарел, и действительно существует план спасения мира упаковки Python под названием
колеса путь
Я цитирую pythonwheels.com здесь:
Какие колеса?
Колеса - это новый стандарт распространения Python, предназначенный для замены яиц. Поддержка предлагается в pip> = 1.4 и setuptools> = 0.8.
Преимущества колес
- Более быстрая установка пакетов расширений на чистом Python и нативном языке C.
- Избегает выполнения произвольного кода для установки. (Избегает setup.py)
- Для установки расширения C не требуется компилятор в Windows или OS X.
- Обеспечивает лучшее кэширование для тестирования и непрерывной интеграции.
- Создает файлы .pyc как часть установки, чтобы убедиться, что они соответствуют используемому интерпретатору python.
- Более согласованная установка на разных платформах и машинах.
Полную историю правильной упаковки Python (и о колесах) можно найти на package.python.org.
Конда путь
Для научных вычислений (это также рекомендуется на package.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
Упаковка никогда не была тривиальной (это можно понять, пытаясь разработать новую), поэтому я полагаю, что многие вещи пошли не так, как надо. Я просто надеюсь, что на этот раз все будет сделано правильно.