2011-01-07 2 views
16

Я хочу создать частную, автономную среду Python, которая не связывается с системными библиотеками (как это делает virtualenv), а также включает в себя собственные версии стандартных библиотек C/C++ для пакетов Python, которые являются просто обертками для этих библиотеки (например, PIL и libjpeg).Каков наилучший способ сделать частную, автономную среду python?

Я видел коммерческие приложения, которые распространяют всю рабочую среду в каталоге, поэтому я знаю, что это можно сделать.

Вопрос в том, есть ли инструмент, который делает это легким в использовании? Virtualenv почти достает меня туда, особенно. с -no-site-пакетами и флагами -relocatable, но это не решает проблему для стандартных библиотек «C». Я хочу, чтобы иметь возможность построить PIL, например, который использует личную версию libjpeg и libpng, добавленную

Любые предложения?

+1

Является ли это для собственного использования или вы хотите, чтобы упаковать его для распространения? Это немного неясно. –

+0

Для моего собственного использования. В идеале, я бы хотел «переносимую среду», я могу перейти от машины к машине с той же базовой архитектурой и os –

ответ

1

Попробуйте cx_Freeze или py2exe. Они используются для упаковки приложений Python, чтобы сделать их распространяемыми и включать все пакеты/библиотеки, от которых оно зависит.

+0

Я искал больше возможностей для создания переносимой среды разработки, которую я мог бы установить на каждой машине, которую я использовал, а не замороженная система для распространения. Но, возможно, эти программы для упаковки могут быть использованы для замораживания среды разработки, тоже .... –

+1

Я вижу. В этом случае вы можете просто попробовать setuptools для создания исходного дистрибутива, с установленным install_requires, чтобы он получал все зависимости, которые вам нужны от pypi. После этого создание среды разработки на другой машине просто будет просто загружать источники в эту машину и запускать сценарий установки. – maranas

1

Я успешно использовал py2exe. Также есть cx_Freeze.

Смотрите также здесь больше предложений:

Что касается этого заявления:

, не обратная ссылки на системные библиотеки

You конечно не может полностью устранить, что для этого требуются некоторые системные библиотеки. Если вы хотите использовать приложение Windows, ему придется использовать Windows API, например. Я предполагаю, что вы не хотите связывать всю копию Windows с вашим приложением на всякий случай, если у них нет установленной Windows.

+1

Справа. Вещи, которые обычно включены в ОС. Но специальные библиотеки, используемые определенным пакетом –

5

Звучит так, как будто вы на самом деле являетесь способом связать конкретный python и скрипт в дистрибутивный пакет. Вы можете сделать следующее:

  • скачать, скомпилировать и установить Python в каталог проекта (т. Е питон-ToolChain)
  • Создать префикс сценария (набор инструментов), который будет принимать относительный путь и Обновление PATH, PYTHONPATH, LD_LIBRARY_PATH динамически.
 
#!/bin/sh 

# If your clever you can determine install directory dynamically 
prefix='install directory' 
toolchain=$prefix/python-toolchain 
export PATH=$toolchain/bin:$prefix/app/bin:$PATH 
export LD_LIBRARY_PATH=$toolchain/lib:$LD_LIBRARY_PATH 
export PYTHONPATH=$prefix/app/lib:$PYTHONPATH 
exec $* 
  • Волшебное печенье в вашем приложении сценарий может выглядеть следующим образом:
 
#!.../install directory/toolchain python 

print "Hello World!" 
  • Теперь вы должны иметь возможность распространять каталог вроде этого:
    • package/
      • python-toolchain/
      • app/
Смежные вопросы