python - 无法在 Python 3.6 中导入 PyQ : flat namespace error

标签 python python-3.x kdb pyq

这是我收到的错误消息:

Python 3.6.0 (v3.6.0:41df79263a11, Dec 22 2016, 17:23:13)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyq import q
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-
packages/pyq/__init__.py", line 21, in <module>  from . import _k
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-
packages/pyq/_k.cpython-36m-darwin.so, 2): Symbol not found: _b9  
Referenced from: 
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-
packages/pyq/_k.cpython-36m-darwin.so
Expected in: flat namespace
in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-
packages/pyq/_k.cpython-36m-darwin.so

我的python版本是3.6,pyq版本是4.0.1。

我通过 pip 安装了 pyq,并通过常规操作系统安装安装了 Python。

最佳答案

PyQ 是嵌入在 kdb+ 中的 python 解释器,pyq 模块无法在独立的 python 中导入。 pyq的使用方法有3种:

  1. 在 q 命令提示符或 q 脚本中,以 p) 前缀开始该行,后面跟一个 python 语句。例如,

    p)from pyq import q
    p)print(q.til(5))
    

将打印0 1 2 3 4

  • 您可以将 Python 代码放入扩展名为 .p 的文件中,并像使用 q 脚本一样使用它:从命令行执行

    $ q foo.p
    
  • 或使用\l命令加载。

  • 最后,pyq 可执行文件提供了一种以交互方式运行标准 Python REPL 或执行 Python 程序的便捷方法。在内部,pyq 执行 q python.q,因此您的代码仍然在 kdb+ 实例内运行。请注意,当您运行 pyq 时,Python REPL 会接管,您无法使用标准 kdb+ IPC 机制与 kdb+ 实例进行交互。如果您需要此类通信,请使用上述两个选项之一。
  • 关于python - 无法在 Python 3.6 中导入 PyQ : flat namespace error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668738/

    相关文章:

    kdb 股票代码工厂 : where to find documentation on . u.upd?

    Python Flask RestPlus 枚举类型

    python - IBM Bluemix 中的 Web 应用程序

    python - 为什么 Python ggplot 返回名称 'aes' 未定义?

    python - 如何创建从另一列分组的新列(例如年龄组)

    python - Django 多对多 "through"关系的成本

    python-3.x - 如何仅循环 ul 内的 li 元素

    python - 按顺序从多个字符串中获取字符

    python - KDB+/q :What is a canonical implementation of a remote query?

    kdb - 在 KDB 中制作直方图最简单的方法是什么?