Как я могу правильно установить несколько непакетных распределений / virtualenv / pip экосистем на Ubuntu?

Я разрабатываю приложения Python в Ubuntu. Я хочу настроить экосистему Distribute / virtualenv / pip для управления пакетами Python независимо от любых пакетов системы Python (которыми я управляю в Synaptic, или, скорее, я позволяю системе управлять ими для меня).

Я мог бы просто установить python-setuptools, python-virtualenv и python-pip системные пакеты и быть на мой веселье, но я также хочу иметь возможность получать последние / конкретные версии Distribute, virtualenv и pip. Для них нет PPA, поэтому мне придется устанавливать их вручную.

Последнее осложнение заключается в том, что я хочу иметь возможность сделать это для нескольких версий Python. То есть, создана одна экосистема для python2.6, другая для python, другая для python3 или для 64-битной системы, другая для chrooted 32-битного Python .

Я предполагаю, что этот процесс будет примерно таким:

  • Используя Python X, установите мою собственную копию Distribute to location в моей домашней папке
  • Использование indie Distribute, easy_install pip
  • Используя indie pip, установите virtualenv
  • Используя indie virtualenv, создайте виртуальную среду
  • Активировать виртуальную среду, установить пакеты
  • Повторите для Python Y, Z и Q

Какие параметры установки / конфигурации я ищу?

  • Ubuntu с запуском `pip install` дает ошибку 'Невозможно построить следующие необходимые пакеты: * freetype'
  • «ImportError: нет модуля с именем httplib2» даже после установки
  • Как я могу установить из подкаталога git с помощью pip?
  • Пакеты пиков не найдены - Пивоваренный Python
  • Пакет пространства имен с tarball и яйцом в Python
  • Ошибка при установке с помощью Pipeon «pip»: не удается получить индексный URL-адрес http: //
  • 3 Solutions collect form web for “Как я могу правильно установить несколько непакетных распределений / virtualenv / pip экосистем на Ubuntu?”

    Основываясь на ответе Уолкера Хейла IV на аналогичный (но отличный!) Вопрос, есть два ключа для этого:

    • вам не нужно устанавливать дистрибутив и pip, потому что они автоматически включаются в новую виртуальную среду (и вы, по-видимому, только хотите, чтобы версии, которые были протестированы с помощью virtualenv)
    • вы можете использовать исходный код virtualenv для создания новой виртуальной среды, а не использовать системную версию virtualenv

    Таким образом, рабочий процесс:

    • установить Python версии X в вашу систему
    • загрузить виртуальный сервер версии Q (возможно, последний)
    • создать новую виртуальную среду с Python X и virtualenv Q
    • ваш новый VE теперь запускает Python X и последние стабильные версии pip и распространяет
    • pip установить любые другие пакеты
    • easy_install любые другие пакеты, которые вы не можете установить pp

    Заметки:

    • В новой виртуальной среде вы можете установить новые (или старые) версии распространения, pip или virtualenv. (Я думаю)
    • Я не использую технику WH4 для создания виртуальной среды bootstrap. Вместо этого я каждый раз создаю новую виртуальную среду из источника virtualenv.
    • Этот метод должен использоваться в любой операционной системе.
    • Если бы я объяснял это кому-то новому для всей концепции Distribute / pip / virtualenv, я бы объяснил это виртуально-ориентированным способом.

    Я написал сценарий bash, который основывает Ubuntu:

    #! /bin/bash # Script to create a python virtual environment # independently of the system version of virtualenv # # Ideally this would be a cross-platform Python # script with more validation and fewer TODOs, # but you know how it is. # = PARAMETERS = # $1 is the python executable to use # examples: python, python2.6, /path/to/python # $2 is the new environment folder # example: /path/to/env_folder/name ## TODO: should be just a name ## but I can't concatenate strings in bash # $3 is a pip requirements file # example: /path/to/req_folder/name.txt # you must uncomment the relevant code below to use $3 ## TODO: should be just a name ## but I can't concatenate strings in bash # other parameters are hard-coded below # and you must change them before first use # = EXAMPLES OF USE = # . env_create python2.5 /home/env/legacy ## creates environment "legacy" using python 2.5 # . env_create python /home/env/default ## creates environment "default" using whatever version of python is installed # . env_create python3.2 /home/env/bleeding /home/req/testing.txt ## creates environment "bleeding" using python 3.2 and installs packages from testing.txt using pip # = SET UP VARIABLES = # Required version of virtualenv package VERSION=1.6.4 # Folder to store your virtual environments VE_FOLDER='/media/work/environments' ## TODO: not used because I can't concatenate strings in bash # Folder to store bootstrap (source) versions of virtualenv BOOTSTRAP_FOLDER='/media/work/environments/bootstrap' ## TODO: not used because I can't concatenate strings in bash # Folder to store pip requirements files REQUIREMENTS_FOLDER='/media/work/environments/requirements' ## TODO: not used because I can't concatenate strings in bash # Base URL for downloading virtualenv source URL_BASE=http://pypi.python.org/packages/source/v/virtualenv # Universal environment options ENV_OPTS='--no-site-packages --distribute' # $1 is the python interpreter PYTHON=$1 # $2 is the target folder of the new virtual environment VE_TARGET=$2 # $3 is the pip requirements file REQ_TARGET=$3 ## = DOWNLOAD VIRTUALENV SOURCE = ## I work offline so I already have this downloaded ## and I leave this bit commented out # cd $BOOTSTRAP_DIR # curl -O $URL_BASE/virtualenv-$VERSION.tar.gz ## or use wget # = CREATE NEW ENV USING VIRTUALENV SOURCE = cd $BOOTSTRAP_FOLDER tar xzf virtualenv-$VERSION.tar.gz # Create the environment $PYTHON virtualenv-$VERSION/virtualenv.py $ENV_OPTS $VE_TARGET # Don't need extracted version anymore rm -rf virtualenv-$VERSION # Activate new environment cd $VE_TARGET . bin/activate # = INSTALL A PIP REQUIREMENTS FILE = ## uncomment this if you want to automatically install a file # pip install -r $REQ_TARGET # = REPORT ON THE NEW ENVIRONMENT = python --version pip freeze # deactivate ## uncomment this if you don't want to start in your environment immediately 

    Результат выглядит примерно так (при включенной загрузке и отключении):

     user @ computer: / home / user $.  env_create python3 / media / work / environment / test
     Новый исполняемый файл python в / media / work / environment / test / bin / python3
     Также создание исполняемого файла в / media / work / environment / test / bin / python
     Установка дистрибутива ................
     Установка протокола ................
     Python 3.2
     распространять == 0.6.19
     wsgiref == 0.1.2
     пользователь @ компьютер: / СМИ / работа / окружающая среда / тест $ 
    

    Как заметил @jfsebastian, virtualenvwrapper делает много или все то, о чем вы просите.

    http://virtualenvwrapper.readthedocs.org/

    virtualenvwrapper – это набор расширений для виртуального инструмента Ian Bicking. Расширения включают в себя оболочки для создания и удаления виртуальных сред и, в противном случае, управление рабочим процессом разработки, что упрощает работу над несколькими проектами одновременно без введения конфликтов в их зависимости.

    Разрабатывая материалы JF Sebastian и Nealmcb, в наши дни я действительно использую свою системную версию virtualenvwrapper (доступную на Ubuntu 12.04 и более поздних версиях).

    virtualenvwrapper – это набор расширений для виртуального инструмента Ian Bicking. Расширения включают в себя оболочки для создания и удаления виртуальных сред и, в противном случае, управление рабочим процессом разработки, что упрощает работу над несколькими проектами одновременно без введения конфликтов в их зависимости.

    Ключевыми функциями, которые я использую (в ответ на этот вопрос), являются:

    • mkvirtualenv --python=PYTHON_EXE создает virtualenv с использованием конкретного исполняемого файла Python (не обязательно должна быть системная версия)
    • привязать к виртуальной поддержке pip
    • allvirtualenv pip install -U pip обновляет пипс во всех virtualenvs

    Указанные здесь переменные среды JFS действительно полезны для скриптов: PIP_DOWNLOAD_CACHE, VIRTUALENV_USE_DISTRIBUTE, WORKON_HOME, VIRTUALENVWRAPPER_PYTHON.

    Единственная причина для обновления самого virtualenv – получить последнюю версию setuptools (ранее называемую Distribute, ранее называемую setuptools). Мне еще не нужно было это делать, но я подозреваю, что было бы проще начать с нового virtualenv и сначала обновить Distribute / setuptools, а затем обновить pip, а затем установить другие библиотеки.

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

    Python - лучший язык программирования в мире.