Каковы преимущества упаковки Вашей библиотеки/приложения Python как .egg файл?

Нам нужно провести различие между двумя переменными среды, которые здесь обсуждаются взаимозаменяемо. Одна из них - переменная JAVA_HOME. Другая - переменная Path. Любой процесс, который ссылается на переменную JAVA_HOME, ищет путь поиска к JDK, а не JRE. Использование переменной JAVA_HOME не предназначено для самого компилятора Java. Компилятор знает свое местоположение. Эта переменная предназначена для другого программного обеспечения, чтобы легче находить компилятор. Эта переменная обычно используется программным обеспечением IDE для компиляции и сборки приложений из исходного кода Java. Напротив, интерпретатор Windows CMD и многие другие программные средства первого и третьего сторон ссылаются на переменную Path, а не на переменную JAVA_HOME.

Использовать случай 1: Компиляция из CMD

Так, например, , если вы не используете какое-либо программное обеспечение IDE, и вы просто хотите скомпилировать из CMD, независимо от вашего текущего рабочего каталога, то вы хотите установить правильную переменную Path. В вашем случае вам даже не нужна переменная JAVA_HOME. Поскольку CMD использует Path, а не JAVA_HOME, чтобы найти компилятор Java.

Использовать случай 2: Компиляция из IDE

Однако, если вы являются , используя некоторую среду IDE программного обеспечения, тогда вы должны посмотреть на документацию в первую очередь. Для этого может потребоваться установка JAVA_HOME, но она может также использовать другое имя переменной для той же цели. Фактически стандартом на протяжении многих лет был JAVA_HOME, но это может быть не всегда.

Используйте случай 3: Компиляция из IDE и CMD

Если в дополнение к IDE программное обеспечение, которое вы также хотите скомпилировать из CMD, независимо от вашего текущего рабочего каталога, а затем в добавлении к переменной JAVA_HOME вам также может потребоваться добавить путь поиска JDK к переменной Path.

JAVA_HOME vs. Path

Если ваша проблема связана с компиляцией Java, то вы хотите проверить переменную JAVA_HOME и путь (если применимо). Если ваша проблема связана с запуском приложений Java, то вы хотите проверить свою переменную Path.

Переменная Path используется универсально во всех операционных системах. Поскольку он определяется системой, и поскольку это переменная по умолчанию, используемая для поиска JRE, почти никогда не возникает проблем с запуском приложений Java. Особенно в Windows, где установщики программного обеспечения обычно настраивают для вас все. Но если вы устанавливаете вручную, то самое безопасное в этом случае - это, возможно, пропустить переменную JAVA_HOME и просто использовать переменную Path для всего, как для JDK, так и для JRE. Любая новая версия программного обеспечения IDE должна иметь возможность выбирать и использовать ее.

Символы

Символические ссылки могут предоставить еще один способ ссылки на путь поиска JDK путем объединения одного из существующие переменные среды.

Я не уверен в предыдущих версиях выпусков Oracle / Sun JDK / JRE, но, по крайней мере, установщик для jdk1.8.0_74 добавляет путь поиска C:\ProgramData\Oracle\Java\javapath к переменной Path, и он помещает его в начало строкового значения. Этот каталог содержит символические ссылки на java.exe, javaw.exe и javaws.exe в каталоге JRE.

Итак, по крайней мере, с Java 8 JDK и, предположительно, Java 8 JRE, нет переменной среды необходимо настроить конфигурацию JRE. Пока вы используете пакет установщика для его настройки. Однако могут быть различия в вашей установке Windows. Обратите внимание, что Oracle JRE поставляется в комплекте с JDK.

Если вы когда-нибудь обнаружите, что ваша конфигурация Java JDK использует неправильную версию компилятора или кажется, что она работает по магии, без явного определения (без кастования заклинания), то вы можете иметь символическую ссылку где-нибудь в ваших переменных окружения. Поэтому вы можете проверить символическую ссылку.

27
задан minty 26 September 2008 в 05:23
поделиться

6 ответов

От сообщество Набора Корпоративного приложения Python :

"Яйца к Python, как Банки к Java..."

яйца Python являются способом связать дополнительную информацию проектом Python, который позволяет зависимостям проекта быть проверенными и удовлетворенными во времени выполнения, а также проектах разрешения обеспечить плагины для других проектов. Существует несколько двоичных форматов, которые воплощают яйца, но наиболее распространенным является '.egg' zipfile формат, потому что это - удобное для распределительных проектов. Вся поддержка форматов включая определенные для пакета данные, метаданные всего проекта, C расширения и код Python.

основные преимущества Яиц Python:

  • Они включают инструменты как "Легкая Установка" диспетчер пакетов Python

  • , .egg файлы являются "нулевой установкой" формат для пакета Python; никакой шаг сборки или установки требуется, просто поместил их на PYTHONPATH или sys.path и использует их (может потребовать времени выполнения, установленного, если расширения C или файлы данных используются)

  • , Они могут включать метаданные пакета, такие как другие яйца, они зависят от [1 117]

  • , Они позволяют "пакеты пространства имен" (пакеты, которые просто содержат другие пакеты), чтобы быть разделенными на отдельные дистрибутивы (например, zope. , скрученный. , пик.* пакеты могут быть распределены как отдельные яйца, в отличие от нормальных пакетов, которые должны всегда помещаться в соответствии с тем же родительским каталогом. Это позволяет то, что является теперь огромными монолитными пакетами, которые будут распределены как отдельные компоненты.)

  • Они позволяют приложениям или библиотекам определять необходимую версию библиотеки, так, чтобы Вы могли, например, требовать ("скрученный Интернет> =2.0") прежде, чем сделать импорт twisted.internet.

  • Они - большой формат для распределительных расширений или плагинов к расширяемым приложениям и платформам (таким как Trac, который использует яйца для плагинов с 0.9b1), потому что время выполнения яйца обеспечивает простые API, чтобы определить местоположение яиц и найти их рекламируемые точки входа (подобными понятию "точки расширения" Eclipse).

  • существуют также другие преимущества, которые могут прибыть из наличия стандартизированного формата, подобного преимуществам формата "банки" Java.

-Adam

30
ответ дан Adam Davis 14 October 2019 в 14:13
поделиться

Одно яйцо отдельно не лучше, чем надлежащий исходный выпуск. Хорошая часть является обработкой зависимости. Как debian или RPM-пакеты, можно сказать, что Вы зависите от других яиц, и они будут установлены автоматически (до pypi.python.org ).

А второй комментарий: сам формат яйца является упакованным форматом двоичного файла. Нормальные пакеты Python, которые состоят из просто кода Python, лучше всего распределяются, поскольку "источник выпускает", таким образом, "Python setup.py sdist", которые приводят к .tar.gz. Их также обычно называют "яйцами", когда загружено на pypi.

, Где Вам нужны двоичные яйца: когда Вы связываете некоторое расширение кода C. Вам будут нужны несколько двоичных яиц (Unix на 32 бита один, окна один, и т.д.) тогда.

5
ответ дан Reinout van Rees 14 October 2019 в 14:13
поделиться

Яйца являются довольно хорошим способом распределить приложения Python. Думайте о нем как о независимом от платформы .deb файле, который установит все зависимости и этажерку. Преимущество состоит в том, что это просто в использовании для конечного пользователя. Недостаток - то, что это может быть громоздким для упаковки приложения как .egg файла.

необходимо также предложить альтернативное средство установки в дополнение к .eggs. Существуют некоторые люди, которым не нравится использовать яйца, потому что им не нравится идея программы, устанавливающей любое программное обеспечение, которое она хочет. Они обычно имеют тенденцию быть типами системного администратора.

4
ответ дан Jason Baker 14 October 2019 в 14:13
поделиться

. файлы яйца являются в основном хорошим способом развернуть Ваше приложение Python. Можно думать о нем как о чем-то как .jar файлы для Java.

[еще 112] информация здесь .

3
ответ дан cschol 14 October 2019 в 14:13
поделиться

Для простых программ Python Вы, вероятно, не должны использовать яйца. Распределение сырых данных .py файлы должно быть достаточным; это похоже на распределительные исходные файлы для GNU/Linux. Можно также использовать различную ОС "поставщики программного блока" (как py2exe или py2app) для создания .exe, .dmg, или других файлов для различных операционных систем.

более сложные программы, например, Django, в значительной степени требуют яиц из-за различных модулей и требуемых зависимостей.

1
ответ дан crystalattice 14 October 2019 в 14:13
поделиться

Независимо от того, что Вы делаете, не прекращайте распределять свое приложение, также, как tarball, поскольку это - самый легкий packagable формат для операционных систем с пакетом sysetem.

1
ответ дан pupeno 14 October 2019 в 14:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: