无法在 Python 3.6 中导入 PyQ:平面命名空间错误
Can't import PyQ in Python 3.6 : flat namespace error
这是我收到的错误消息:
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 通过常规 OS 安装。
我想我找到了一个解决方案:当您 运行 您的 python 带有 pyq 二进制文件的脚本时,将能够 运行 [导入 pyq]。正如您 运行 一个常规 python 脚本 python xxx.py,您需要 运行 它作为 pyqxxx.py
PyQ 是嵌入在 kdb+ 中的 python 解释器,pyq 模块无法在独立 python 中导入。 pyq的三种使用方式:
在 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 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 通过常规 OS 安装。
我想我找到了一个解决方案:当您 运行 您的 python 带有 pyq 二进制文件的脚本时,将能够 运行 [导入 pyq]。正如您 运行 一个常规 python 脚本 python xxx.py,您需要 运行 它作为 pyqxxx.py
PyQ 是嵌入在 kdb+ 中的 python 解释器,pyq 模块无法在独立 python 中导入。 pyq的三种使用方式:
在 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+ 实例交互。如果您需要此类通信,请使用上述两个选项之一。