使用python+p的未定义符号TLSv1

2024-05-28 23:39:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在本地的archlinux机器上安装了p4库,一切都很顺利。 我现在正试图在几个虚拟机上做同样的事情(同样的操作系统也是64位的),但是不能让它运行。。。在

安装进展顺利,没有抱怨,但当我尝试导入时,我得到:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "P4.py", line 312, in <module>
    import P4API
ImportError: /usr/lib/python2.7/site-packages/P4API.so: undefined symbol: TLSv1_method

我用符号看看 nm-A/usr/lib/python2.7/site-packages/P4美国石油学会在

我可以看到,事实上所有与SSL相关的符号都是未定义的(在工作的符号上定义的),但为什么呢? 我安装了openssl和Python的安装方式完全相同,我找不到任何其他有用的库。在

有什么想法吗?在

编辑: 显然,唯一的区别是p4p4安装错误美国石油学会“ldd”输出中缺少librt(librt实际上就在那里)。 不确定它与TLS问题有什么关系,试图重新安装glibc然后 p4python但是仍然没有运气。。在


Tags: inlibpackagesusrline符号sitefile
1条回答
网友
1楼 · 发布于 2024-05-28 23:39:02

根据“rt”和“ssl”库重新构建P4Python可以解决这个问题。在

  1. 将p4api从perforce站点上取下(例如,对于Linux,取这个:http://filehost.perforce.com/perforce/r13.2/bin.linux26x86_64/p4api.tgz
  2. 去掉P4Python的源代码http://public.perforce.com/guest/robert_cowham/perforce/API/python/main/p4python.zip
  3. tar xfp4api存档
  4. 解压p4pthon档案
  5. 编辑setup.cfg指向P4API目录
  6. 编辑setup.py并转到第120行并添加“ssl”和“rt”,如下所示

    else: # Assume Linux
        libraries = ["client", "rpc", "supp", "ssl", "rt"]    # P4API libs
        extra_compile_args = ["-DOS_LINUX", "-D%s" % p4_api_ver]
    
  7. sudo python setup.py install

相关问题 更多 >

    热门问题