virtualenv со всеми библиотеками Python - PullRequest
2 голосов
/ 15 июля 2009

Мне нужно получить код Python, который опирается на Python 2.6, работающий на машине только с Python 2.3 (у меня нет прав root).

Это типичный сценарий для virtualenv. Единственная проблема заключается в том, что я не могу убедить его скопировать все библиотеки в новую среду.

virtualenv --no-site-packages my_py26 

не делает то, что мне нужно. Файлы библиотеки по-прежнему являются только ссылками на каталог /usr/lib/python2.6.

Нет, мне интересно, является ли virtualenv правильным решением для этого сценария. Из того, что я понимаю, он предназначен только для машин с точно такой же версией Python. Такие инструменты, как cx_Freeze и т.п., не работают для меня, так как я запускаю файл Python после настройки некоторых переменных среды.

Возможно, существует скрытая опция virtualenv, которая копирует все файлы библиотеки Python в новую среду? Или какой-то другой инструмент, который может помочь здесь?

Ответы [ 3 ]

4 голосов
/ 15 июля 2009

Я не могу помочь вам с вашей проблемой virtualenv, так как я никогда не использовал ее. Но я просто укажу кое-что для будущего использования.

Вы можете установить программное обеспечение из источников в вашу домашнюю папку и запускать их без root-доступа. например для установки python 2.6:

~/src/Python-2.6.2 $ ./configure --prefix=$HOME/local
~/src/Python-2.6.2 $ make
 ...
~/src/Python-2.6.2 $ make install
 ...
export PATH=$HOME/local/bin:$PATH
export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH

~/src/Python-2.6.2 $ which python
/home/name/local/bin/python

Это то, что я использовал в Uni для установки программного обеспечения там, где у меня нет root-доступа.

4 голосов
/ 15 июля 2009

Нет, я думаю, вы совершенно не поняли, что делает virtualenv. Virtualenv создает новую среду на том же компьютере , которая изолирована от основной среды. В такой среде вы можете устанавливать пакеты, которые не устанавливаются в основной среде, а с помощью --no-site-packages вы также можете изолировать вас от установленных модулей основных сред.

Если вам нужно запустить программу, для которой требуется Python 2.6, на машине, где нет версии 2.6, вам нужно установить Python 2.6 на эту машину.

0 голосов
/ 15 июля 2009

Вы не ясно объяснили, почему cx_Freeze и тому подобное не будут работать для вас. Обычный подход к распространению приложений Python на машины с более старой версией Python или вообще без Python - это инструмент, подобный PyInstaller (в том же классе инструментов, что и cx_Freeze). PyInstaller создает копии всех ваших зависимостей и позволяет вам создать один исполняемый файл, который содержит все ваши зависимости Python.

В качестве причины, по которой вы не можете использовать такие инструменты, вы упоминаете настройку переменных среды; если вы уточните, почему это так, вы сможете получить более полезный ответ.

...