在我的Linux机器上,直接执行python命令,它显示我的UCS4是UCS4构建。
Python 2.7.3 (default, Jan 8 2018, 17:43:28)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> if sys.maxunicode > 65535:
... print 'UCS4 build'
... else:
... print 'UCS2 build'
...
UCS4 build但是,当我在C++程序中调用python时,使用
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("if sys.maxunicode > 65535:\n print 'UCS4 build'\nelse:\n print 'UCS2 build'");它打印"UCS2 build“。c++调用的python中的其他信息包括:
platform:Linux-2.6.32_1-19-0-0-x86_64-with-centos-6.3-Final (“Python”,'2.7.5 (缺省值,2016年4月13日,14:25:24) GCC 4.4.6 20120305 (红帽4.4.6-4‘) (“Python”、“*/venv”)
我已经双重检查了python可执行路径。它们来自同一条道路,但python版本和gcc版本不同。
有人知道这个奇怪的交响乐的原因吗?
发布于 2018-06-29 06:53:26
我解决了这个问题。使用ldd命令,我发现libpython2.7.so.1.0指向错误的默认路径,而不是前面打印的路径。纠正LD_LIBRARY_PATH解决了这个困惑……
https://stackoverflow.com/questions/51093968
复制相似问题