2013-11-07 4 views
5

Просто пытаясь понять, как использовать реализацию Python3.3 PEP405, что является спецификацией venv. Это мое первое погружение в Python3, так как я до сих пор находился в Python2.Правильное использование Pip в Python3.3's venv

Запуск Linux Mint KDE, который в значительной степени является дистрибутивом Debian, я скомпилировал и установил Python 3.3.2. Чтобы попробовать эту необычную новую функцию, я пошел туда, где хотел создать venv, и побежал python3.3 -m venv testenv. Он правильно создал env. Что меня смущает, согласно спецификации, должен быть файл pysetup3 внутри каталога bin, однако такого файла нет. Я предполагаю, что это эквивалент easy_install.

Поскольку в env нет стандартных скриптов установки, я только что загрузил и запустил сценарий easy_install, а затем запустил easy_install pip, чтобы получить команду pip для моего env.

Это сценарий pysetup3, старая идея, которая не делала разреза? Должен ли я переустановить easy_install и pip на каждый новый venv?

+3

Интересно. Возможно, стоит отметить, что [текущая документация] (http://docs.python.org/3/library/venv.html) не упоминает сценарий 'pysetup3', но упоминает (в сером ** примечании : **), чтобы после танцевальной вечеринки танцевать «distribute_setup.py» после активации «venv». –

+2

Я пробовал использовать «venv» Python 3.3, но после таких проблем я вернулся к использованию «virtualenv». Я надеюсь, что использование Python 3.4 (включение «pip») (http://www.python.org/dev/peps/pep-0453/) значительно улучшит работу с «venv» в будущем. –

+0

@ Jim Garrison, интересно, не потому ли, что они не включили скрипт для автоматической установки easy_install и pip, а затем при создании venv. – basicdays

ответ

2

Спасибо Джим Гаррисон за то, что указали мне в направлении. Кажется, PEP453 решит проблему того, что, кажется, отсутствует в новых средах, используя venv. PEP453 утверждает, что pip будет доступен по умолчанию в установках Python, включая явно заданный venv. PEP453 планируется включить в Python 3.4. Я предполагаю, что сейчас в Python 3.3, нам придется вручную установить setuptools и pip, или продолжать использовать virtualenv.

Не знаю, что pysetup3 от PEP405, но я думаю, что не все должно быть в спецификации. :)

2

До тех пор пока pip не будет частью Python в 3.4, вы можете создать виртуальные среды, которые включают в себя pip, запустив this script, доступный в документах. Скрипт просто расширяет класс EnvBuilder от venv для установки setuptools и pip после создания среды.

Пип устанавливает в локальную/bin папку venv. Вы захотите связать его с папкой «bin», чтобы он работал так, как ожидается, после запуска «активировать». Из оболочки, типа:

ln -s /path/to/venv/local/bin/pip /path/to/venv/bin/pip 

В качестве альтернативы, вы можете добавить две строки кода метода install_pip() в script, чтобы сделать это для вас каждый раз, когда:

def install_pip(self, context): 
    ... (default script code) ... 
    # Add these two lines at the end: 
    pip_path = os.path.join(context.env_dir, 'local', 'bin', 'pip') 
    self.symlink_or_copy(pip_path, os.path.join(context.bin_path, 'pip')) 
Смежные вопросы