Использование интерпретаторов из VirtualEnv

Я начал экспериментировать с Crossbar и WAMP (протокол обмена сообщениями веб-приложений), и я влюбился в этот материал всего за несколько недель. Я ответил на этот вопрос о переполнении стека (Отладка приложения Crossbar.io в IntelliJ), однако у меня есть вопрос о моем собственном решении.

...

Step 2: Create a pyenv with Python 2 for crossbar.io

    $ pyenv virtualenv 2.7.6 crossbar
    $ pyenv activate crossbar
    (crossbar)$ pip install crossbar
    
...

Step 5: Create a pyenv with Python 3 for app components

    $ pyenv virtualenv 3.4.2 app
    $ pyenv activate app
    (app)$ pip install autobahn
    

Шаг 6: Создайте обычный проект PyCharm с «приложением» в качестве локальной среды Python. Я имею в виду использование исполняемого файла python из приложения pyenv в качестве интерпретатора.

...

На шаге 5 моего решения я предложил создать новую виртуальную среду Python для компонента приложения.

Шаг 6 предназначен исключительно для автоматического завершения IDE и поиска локальных пакетов, библиотек и материалов из виртуальной среды выше. Я полагаю, что команда "перекладина" не знает об этой виртуальной среде.

Итак, когда я запускаю приложение с помощью команды ~/.pyenv/versions/crossbar/bin/crossbar start, как убедиться, что вместо этого используется интерпретатор python из виртуальной среды? Я имею в виду из ~/.pyenv/versions/app/bin/python3?

Это как-то связано с файлом конфигурации? Я быстро просмотрел документы (http://crossbar.io/docs/Container-Configuration/), но, к сожалению, вообще не нашел никакой информации об интерпретаторе Python.

Я попытался поместить "executable": "~/.pyenv/versions/app/bin/python3" в файл конфигурации, но он явно не прошел проверку. Я имею в виду, что команда проверка перекладины завершается ошибкой.

Заранее благодарю.


person Eddie    schedule 06.01.2015    source источник


Ответы (1)


Если вы хотите использовать Python 3 для своего компонента приложения и запустить этот компонент с помощью Crossbar.io, это означает, что вам нужен гостевой работник.

Способ настройки запуска исполняемого файла для гостевого рабочего (который в вашем случае будет Python 3) действительно заключается в использовании параметра executable.

Документов мало, но они здесь.

Безопаснее всего использовать полный абсолютный путь в executable, указывающий на двоичный файл Python 3 в виртуальном окружении, которое вы хотите использовать для своего компонента.

Обратите внимание, что вышеприведенное относится к гастарбайтерам. Crossbar.io собственные рабочие процессы включают маршрутизаторы и контейнер компонентов. Последний также может размещать компоненты приложений Python, но только из того же Python, что и Crossbar.io. Документы (извините, я знаю, скудные) находятся здесь.

person oberstet    schedule 06.01.2015
comment
Спасибо оберстет. Я не возражаю против использования Twisted, но я считаю, что иногда удобнее явно выбрать интерпретатор Python. Возможно, я что-то упустил, но в итоге я использовал гостевых рабочих на основе asyncio, однако мне нужно указать полный абсолютный путь в исполняемом файле. Меня это не слишком беспокоит, но есть ли простой способ вместо этого указать относительный путь? Так что становится проще управлять версиями. Или я могу написать немного сценария, чтобы сделать это. В любом случае большое спасибо за вашу помощь. - person Eddie; 07.01.2015
comment
Вы также можете использовать относительные пути для executable (относительно того, где находится файл config.json .. то есть каталог .crossbar), или вы можете просто использовать python3, учитывая, что последний может быть разрешен в среде процесса контроллера узла Crossbar.io. - person oberstet; 07.01.2015