【问题标题】:Using Interpreters from the VirtualEnv使用 VirtualEnv 的解释器
【发布时间】:2015-01-06 04:23:10
【问题描述】:

我已经开始尝试使用 Crossbar 和 WAMP(Web 应用程序消息传递协议),并且我在短短几周内就爱上了这些东西。我也回答了this stack overflow question (Debugging Crossbar.io app in IntelliJ),但是,我对自己的解决方案有疑问。

...

第 2 步:使用 Python 2 为 crossbar.io 创建一个 pyenv

$ pyenv virtualenv 2.7.6 交叉开关 $ pyenv 激活交叉开关 (crossbar)$ pip install crossbar ...

第 5 步:使用 Python 3 为应用组件创建 pyenv

$ pyenv virtualenv 3.4.2 应用程序 $ pyenv 激活应用 (app)$ pip install autobahn

第 6 步:创建一个普通的 PyCharm 项目,将“app”作为本地 python 环境。我的意思是使用 app pyenv 中的 python 可执行文件作为 口译员。

...

在我的解决方案的第 5 步中,我建议为应用组件创建一个新的虚拟 python 环境。

第 6 步纯粹是让 IDE 自动完成并从上面的虚拟环境中查找本地包、库和东西。我想,“crossbar”命令不知道这个虚拟环境。

那么,当我通过 ~/.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" 放在配置文件中,但它显然没有通过验证。我的意思是 crossbar check 命令失败。

谢谢你的高级。

【问题讨论】:

    标签: python virtualenv autobahn crossbar


    【解决方案1】:

    如果您想为您的应用程序组件使用 Python 3,并让该组件由 Crossbar.io 启动,这意味着您需要一个 guest worker

    为来宾工作人员(在您的情况下为 Python 3)配置可执行文件运行的方法确实是使用 executable 参数。

    文档很少,但here

    您最安全的选择是在 executable 中使用完全限定的绝对路径,指向您要用于组件的 virtualenv 中的 Python 3 二进制文件。

    注意,以上内容适用于客工。 Crossbar.io native workers 包括路由器和组件容器。后者也能够托管 Python 应用程序组件,但来自运行 Crossbar.io 的同一 Python。文档(对不起,我知道,稀疏)是here

    【讨论】:

    • 感谢 oberstet。我完全不介意使用 twisted,但我相信有时明确选择 Python 解释器会更方便。也许我错过了一些东西,但我最终使用了基于 asyncio 的来宾工作者,但是,我需要将完整的绝对路径放入可执行文件中。它并没有给我带来太多困扰,但是有没有一种简单的方法可以代替相对路径?使版本控制变得更容易。或者我可以写一些脚本来做。无论如何,非常感谢您的帮助。
    • 您也可以使用executable 的相对路径(相对于config.json 文件所在的位置.. 即.crossbar 目录),或者您可以只使用python3,因为后者可以在Crossbar.io节点控制器进程的环境中解决。