python - 如何在 Python 支持下使用 quickfix (v1.13.3) 更正编译/构建问题(... "_quickfix"导入异常)

标签 python compilation quickfix

我花了相当于 1/2 天的时间来解决这个问题,所以我想分享一下我遇到的 Quickfix Engine 编译问题和解决方案。

我没有从此处指向的“Quickfix 引擎”帮助资源中得到回复: ” http://quickfixengine.org/help “...因此我提供这个的另一个原因。

环境:Fedora 18 - 和 - CentOS6(64 位)。

在使用 Python 支持成功编译 quickfix 后(即 configure [opts]; make; make install),我得到以下 python 导入异常,表明找不到 python 模块“_quickfix”:

==============================================
user$ python -c "import quickfix"

Traceback (most recent call last):
File " ", line 1, in
File "/home/user/APPS.d/ENTHOUGHT-PYTHON-IDE.d/x86_64.d/latest/lib/python2.7/site-packages/quickfix.py", line 7, in

import _quickfix
ImportError: No module named _quickfix
==============================================

问题似乎出在“make install”调用的安装脚本中。

python 解释器说“_quickfix”模块没有退出。从下面“make install”安装的文件列表可以看出,没有“_quickfix.py”文件,但是有一个“_quickfix.so”文件和一个“_quickfix.dylib”文件的引用:

/home/user/.local/lib/python2.7/site-packages/_quickfix.dylib -> /home/user/APPS.d/QUICKFIX.d/latest/lib/python/_quickfix.dylib
/home/user/.local/lib/python2.7/site-packages/_quickfix.so -> /home/user/APPS.d/QUICKFIX.d/latest/lib/python/_quickfix.so
/home/user/.local/lib/python2.7/site-packages/quickfix40.py
/home/user/.local/lib/python2.7/site-packages/quickfix41.py
/home/user/.local/lib/python2.7/site-packages/quickfix42.py
/home/user/.local/lib/python2.7/site-packages/quickfix42.pyc
/home/user/.local/lib/python2.7/site-packages/quickfix43.py
/home/user/.local/lib/python2.7/site-packages/quickfix44.py
/home/user/.local/lib/python2.7/site-packages/quickfix50.py
/home/user/.local/lib/python2.7/site-packages/quickfix50sp1.py
/home/user/.local/lib/python2.7/site-packages/quickfix50sp2.py
/home/user/.local/lib/python2.7/site-packages/quickfix.py
/home/user/.local/lib/python2.7/site-packages/quickfix.pyc
/home/user/.local/lib/python2.7/site-packages/quickfixt11.py

/home/user/APPS.d/QUICKFIX.d/latest/lib/libquickfix.la
/home/user/APPS.d/QUICKFIX.d/latest/lib/libquickfix_python.la
/home/user/APPS.d/QUICKFIX.d/latest/lib/libquickfix_python.so.10.0.0
/home/user/APPS.d/QUICKFIX.d/latest/lib/libquickfix_python.so.10 -> libquickfix_python.so.10.0.0
/home/user/APPS.d/QUICKFIX.d/latest/lib/libquickfix_python.so -> libquickfix_python.so.10.0.0
/home/user/APPS.d/QUICKFIX.d/latest/lib/libquickfix.so.14.0.0
/home/user/APPS.d/QUICKFIX.d/latest/lib/libquickfix.so.14 -> libquickfix.so.14.0.0
/home/user/APPS.d/QUICKFIX.d/latest/lib/libquickfix.so -> libquickfix.so.14.0.0
/home/user/APPS.d/QUICKFIX.d/latest/lib/pkgconfig/quickfix.pc

最佳答案

解决方案: 问题是上面的前两个条目(符号链接(symbolic link))已损坏。

首先,目标目录不正确:

/home/user/APPS.d/QUICKFIX.d/latest/lib/python/...

实际上应该是:

/home/user/APPS.d/QUICKFIX.d/latest/lib/...

所以我们首先解决这个问题:

user$ cd /home/user/.local/lib/python2.7/site-packages
user$ rm _quickfix.so _quickfix.dylib
user$ ln -s /home/user/APPS.d/QUICKFIX.d/latest/lib/_quickfix.so    _quickfix.so
user$ ln -s /home/user/APPS.d/QUICKFIX.d/latest/lib/_quickfix.dylib _quickfix.dylib

接下来,在更正目标目录位置的情况下,符号链接(symbolic link)仍然损坏;这次是因为它们在那个(刚刚更正的)目标目录中指向的文件名不存在(即“_quickfix.so”和“_quickfix.dylib”不存在)。

玩了一会儿之后,我通过像这样创建那些丢失的文件来开始工作:

user$ cd /home/user/APPS.d/QUICKFIX.d/latest/lib
user$ ln -s libquickfix_python.so _quickfix.so
user$ ln -s <???> _quickfix.dylib  # Actually I didn't create this one yet. It's not yet clear to me what it should point to. I Will update this post later.

-

Note: Because I compiled QuickFix so that it does not install to the traditional "/usr/local/" directory structure, I had to append my "LD_LIBRARY_PATH" to include: "/home/user/APPS.d/QUICKFIX.d/latest/lib"

通过最少的测试,现在似乎一切正常(或至少在正确的方向上):

user$ python -c "import quickfix"; echo ${?}
0
user$ python -c "import quickfix42"; echo ${?}
0

当我弄清楚第二个链接应该是什么(如果有必要)时,或者如果我实现的更正遇到任何运行时错误,我将更新/编辑这篇文章。

我希望这对某人有帮助。

诺埃尔

关于python - 如何在 Python 支持下使用 quickfix (v1.13.3) 更正编译/构建问题(... "_quickfix"导入异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15977813/

相关文章:

vb.net 编译错误 'abc' 在命名空间 'xyz' 中不明确

java - 将列 append 到 QuickFix/J Logs 数据库(自定义 QuickFix/J Logger)

java - 实现基于 FIX 协议(protocol)的订单,支持止损和获利

python - 使用类装饰器,如何在不重新定义类的情况下重写方法?

python - 打印 django 数据库中的数据

python - 在 Python Tkinter 中按下按钮后如何清除窗口?

c++ - Quickfix:同一应用程序中的接受者和发起者?

python - 在数据帧中复制行 x 次 - 提高性能

java - 以编程方式编译 Java 类?

emacs - 如何同时运行 emacs 和终端?