ФорумПрограммированиеPythonPylons, Pyramid, TurboGears → Активация для виртуалки

Активация для виртуалки

  • incomer17

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz Янв. 4, 2018, 9:43 п.п.

    Всем добрый вечер! Есть проблемка, которую пока не смог разрешить. Описываю суть: с помощью утилиты venv, встроенной в питон, я создал виртуальную папку my_env, в которой (если быть точным, то в подкаталоге lib, находящимся в каталоге my_env) установлен фреймворк Pyramid, При запуске однофайлового "проекта" Pyramid "Hello world" (01: Single-File Web Applications — The Pyramid Web Framework v1.9.1 [docs.pylonsproject.org]) оказалось, что активация виртуальной папке не требуется, всё заработало, т.е. по указанному порту в браузере я нашёл приветствие. Но это-то как раз и смущает. Папка-то не активирована, а фреймворк под установленным питоном 3.6.3 пашет (т.е. питоновский веб-сервер запустился). В связи с этим возникли вопросы:
    1. Почему скрипт работает (см. адрес выше)?
    2. Какова "физика" активации? Понятно. что $ source $VENV/bin/activate, но это как раз и не потребовалось.

    Заранее благодарю за светлые мысли.

  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Янв. 5, 2018, 1:27 д.п., спустя 3 часа 44 минуты 24 секунды

    @incomer17, а вы уверены, что pyramid не установлен глобально? попробуйте pip list без активации venv, а потом pip list -l с активированным

  • incomer17

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz Янв. 5, 2018, 10:22 п.п., спустя 20 часов 54 минуты 14 секунд

    @Sinkler
    eugene@eu-IP-U430p:~$ cd $VENV # вошёл в мою виртуальную НЕактивированную папку my_env
    eugene@eu-IP-U430p:~/.pyenv/versions/3.6.3/my_env$ pip list
    pyenv: version `pyramid' is not installed (set by /home/eugene/.pyenv/.python-version) # пирамида, как видим, не обнаружена
    eugene@eu-IP-U430p:~/.pyenv/versions/3.6.3/my_env$ source bin/activate # активируем папку и всё ОК.
    (my_env) eugene@eu-IP-U430p:~/.pyenv/versions/3.6.3/my_env$ pip list -l
    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
    arrow (0.12.0)
    attrs (17.3.0)
    beautifulsoup4 (4.6.0)
    binaryornot (0.4.4)
    certifi (2017.11.5)
    Chameleon (3.2)
    chardet (3.0.4)
    click (6.7)
    colander (1.4)
    cookiecutter (1.6.0)
    coverage (4.4.2)
    deform (2.0.4)
    future (0.16.0)
    hupper (1.0)
    idna (2.6)
    iso8601 (0.1.12)
    Jinja2 (2.10)
    jinja2-time (0.2.0)
    Mako (1.0.7)
    MarkupSafe (1.0)
    PasteDeploy (1.5.2)
    peppercorn (0.5)
    pip (9.0.1)
    plaster (1.0)
    plaster-pastedeploy (0.4.1)
    pluggy (0.6.0)
    poyo (0.4.1)
    py (1.5.2)
    Pygments (2.2.0)
    pyramid (1.9.1)
    pyramid-chameleon (0.3)
    pyramid-debugtoolbar (4.3)
    pyramid-jinja2 (2.7)
    pyramid-mako (1.0.2)
    pytest (3.3.1)
    pytest-cov (2.5.1)
    python-dateutil (2.6.1)
    repoze.lru (0.7)
    requests (2.18.4)
    setuptools (38.2.4)
    six (1.11.0)
    SQLAlchemy (1.1.15)
    translationstring (1.3)
    urllib3 (1.22)
    venusian (1.1.0)
    waitress (1.1.0)
    WebOb (1.7.3)
    WebTest (2.0.29)
    whichcraft (0.4.1)
    zope.deprecation (4.3.0)
    zope.interface (4.4.3)
    (my_env) eugene@eu-IP-U430p:~/.pyenv/versions/3.6.3/my_env$

  • incomer17

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz Янв. 5, 2018, 10:36 п.п., спустя 14 минут 26 секунд

    НО, на одном из форумов меня спросили, почему я игнорирую документацию. А в ней сказано: You don’t specifically need to activate an environment; activation just prepends the virtual environment’s binary directory to your path, so that “python” invokes the virtual environment’s Python interpreter and you can run installed scripts without having to use their full path. However, all scripts installed in a virtual environment should be runnable without activating it, and run with the virtual environment’s Python automatically.
    Перевод:
    Вам не нужно активировать среду; активация просто добавляет двоичный каталог виртуальной среды к вашему пути, так что «python» вызывает интерпретатор Python виртуальной среды, и вы можете запускать установленные сценарии, не используя полный путь. Тем не менее, все скрипты, установленные в виртуальной среде, должны быть запущены без его активации и автоматически запускаться с помощью Python виртуальной среды. [https://docs.python.org/3/library/venv.html]

    Вот крыша немного и поехала. То ли просто добавляется путь к бинарному каталогу. то ли изолируются установленные приложения от системы, но скрипты работают без активации??? Пирамида запускается в неактивированной папке, но "видна" только в активированной???

  • incomer17

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz Янв. 6, 2018, 6:57 п.п., спустя 20 часов 21 минуту 19 секунд

    @Sinkler, но pyenv я использовал для установки разных версий питона (2.7.14 и 3.6.3), а затем с помощью venv была организована виртуальная папка под версией питона 3.6.6. VENV появилась только в 3-й версии питона, встроена в него и, насколько я знаю, является альтернативой virtualenv. Буду Вам признателен. если Вы проясните положение с созданием "песочницы" на данный момент, или укажете ссылки на актуальные механизмы виртуализации. Как я понял из Вашего поста, активация не нужна вовсе? Или всё-таки нужна в определённых случаях? И ещё, если не использовать venv или внешнюю альтернативу virtualenv, то тогда что?

  • incomer17

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz Янв. 6, 2018, 7:18 п.п., спустя 21 минуту 6 секунд

    R@Sinkler, кстати, pip list сработал только после активации папки my_env.

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Янв. 10, 2018, 11:33 д.п., спустя 3 дня 16 часов 15 минут

    @Sinkler, активация вроде как всегда нужна. Она не нужна только если у тебя virtualenv-wrapper стоит какой-нибудь

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 10, 2018, 6:41 п.п., спустя 7 часов 7 минут 11 секунд

    @Sinkler, активация вроде как всегда нужна

    @adw0rd, и даже при virtualenv-wrapper тоже вроде как нужна же, только не через аквтивацию, а через еботу магическую типа workon $projectname

    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Янв. 10, 2018, 9:58 п.п., спустя 3 часа 17 минут 11 секунд

    @incomer17, попробовал в 3.6 - да, активация нужна даже через python -m venv. так что видимо либо пакет стоял глобально, либо не заметили как активировали

  • incomer17

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz Янв. 12, 2018, 6:43 п.п., спустя 1 день 20 часов 44 минуты

    @Sinkler, ни то, ни другое. См. пост от 05.01.2018. Тут собака и зарыты. Применяем или $VENV или активацию. Но VENV - более гибкий механизм. Теперь пользуюсь только явным способом указания виртуальной папки для запуска скриптов от пирамиды. см. Quick Tutorial for Pyramid — The Pyramid Web Framework v1.9.1 [docs.pylonsproject.org] Спокойно указывайте путь к своей виртуалке через $VENV и оставьте активацию/деактивацию для virtualenv. Выше я привёл ссылку на замечательную документацию.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!