环境为:

OS: ubuntu18.04

Python: 3.6

问题原因:

尝试使用 jaeger-client-python,官方给出的示例(https://github.com/jaegertracing/jaeger-client-python ReadMe文件中所述),出现了下面错误

Traceback (most recent call last):
File "jaeger.py", line 3, in <module>
from jaeger_client import Config
File "/usr/local/lib/python3.6/dist-packages/jaeger_client/__init__.py", line 27, in <module>
from .config import Config # noqa
File "/usr/local/lib/python3.6/dist-packages/jaeger_client/config.py", line 26, in <module>
from .reporter import (
File "/usr/local/lib/python3.6/dist-packages/jaeger_client/reporter.py", line 32, in <module>
from jaeger_client.thrift_gen.agent import Agent
File "/usr/local/lib/python3.6/dist-packages/jaeger_client/thrift_gen/agent/Agent.py", line 13, in <module>
from .ttypes import *
File "/usr/local/lib/python3.6/dist-packages/jaeger_client/thrift_gen/agent/ttypes.py", line 12, in <module>
import jaeger.ttypes
File "/mnt/d/code/doc2/13_jaeger/jaeger.py", line 3, in <module>
from jaeger_client import Config
ImportError: cannot import name 'Config'  

经过查找发现是在 thrift 生成的文件中导入包出错

解决方案:重新打包 .whl 安装包

step1:下载 jaeger-client-python 源码

step2:修改代码如下

文件1:./jaeger_client/thrift_gen/agent/ttypes.py 中,找到

import jaeger.ttypes

修改为:

from jaeger_client.thrift_gen.jaeger import ttypes as jaeger_ttypes

文件2:./jaeger_client/thrift_gen/agent/Agent.py 中,找到

...
thrift_spec = (
None, # 0
(1, TType.STRUCT, 'batch', (jaeger.ttypes.Batch, jaeger.ttypes.Batch.thrift_spec), None, ), # 1
)
... if fid == 1:
if ftype == TType.STRUCT:
self.batch = jaeger.ttypes.Batch()
self.batch.read(iprot)
else:
...

修改其中的 jaeger.ttypes 为 jaeger_ttypes

step3:在代码根目录下执行编译

python3 setup.py sdist bdist_wheel

完成后,生成的文件在 ./dist 下面,有 .whl 和 tgz 两种格式

python 版本 jaeger-client 导入失败 jaeger-client-python的更多相关文章

  1. python 2.7 pip导入django,将python部署到sublime上

    1.安装python 2.7,并且导入第三方库django 下载python 2.7,然后把python2.7的python.exe的路径和pip的路径添加到系统环境变量的path路径下. win+R ...

  2. python sklearn.cross_validation 模块导入失败

    参考链接: https://blog.csdn.net/Jae_Peng/article/details/79277920 解决办法: 原来在 cross_validation 里面的函数都放在 mo ...

  3. ubuntu 16.04 更改默认Python版本

    一般Ubuntu默认的Python版本都为2.x, 如何改变Python的默认版本呢?假设我们需要把Python3.5设置为默认版本: 首先查看Python默认版本: ubuntu@user~$:py ...

  4. 更改Ubuntu默认python版本的方法

    当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.一般Ubuntu默认的Python版本都为2. ...

  5. anaconda的python版本与本地python版本不同时的问题

    在用anaconda,尤其是win下的时候,本地的python版本可能和虚拟环境中需要的python版本不同,而在虚拟环境中使用pip3安装包的时候,仍会出现版本是本地的python版本的情况,虽然并 ...

  6. 使用pyenv与pyenv-virtualenv管理Python版本与虚拟环境

    在上一篇博客中,我介绍了如何在ubutnu 18.04中安装pyenv.这一次我将介绍如何使用pyenv与pyenv-virtualenv管理Python版本与虚拟环境. 0.相关命令 首先使用pye ...

  7. 使用pyenv来管理python版本

    使用pyenv可以很方便的切换python版本,而不会影响系统的python版本,对需要使用supervisor(仅支持python2)托管程序,项目使用python3开发的情况十分有用 pyenv的 ...

  8. Centos 6.8 系统升级默认的Python版本

    1.编译安装python2.7 # wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz # Python-2.7.12.tg ...

  9. 更改Ubuntu默认python版本的两种方法python-> Anaconda

    当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.一般Ubuntu默认的Python版本都为2. ...

  10. Python 版本之 Anaconda

    https://www.anaconda.com/download/#linux Anaconda概述 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windo ...

随机推荐

  1. 论TEMP临时变量与VAR静态变量

    TEMP临时变量:顾名思义,这种变量类型是临时的,没有固定的存放数据的内存空间.每次扫描结束后则清零,在下个扫描周期开始时,这个变量的值都是不确定的,一般为0.使用临时变量需要遵循一个原则:先赋值再使 ...

  2. java 面向对象(十四):面向对象的特征二:继承性 (三) 关键字:super以及子类对象实例化全过程

    关键字:super 1.super 关键字可以理解为:父类的2.可以用来调用的结构:属性.方法.构造器3.super调用属性.方法:3.1 我们可以在子类的方法或构造器中.通过使用"supe ...

  3. python 并发专题(六):协程相关函数以及实现(gevent)

    文档资源 http://sdiehl.github.io/gevent-tutorial/ 一.协程实现 线程和协程 既然我们上面也说了,协程也被称为微线程,下面对比一下协程和线程: 线程之间需要上下 ...

  4. Python模块02/序列化/os模块/sys模块/haslib加密/collections

    Python模块02/序列化/os模块/sys模块/haslib加密/collections 内容大纲 1.序列化 2.os模块 3.sys模块 4.haslib加密 5.collections 1. ...

  5. Facebook没有测试工程师,如何进行质量控制的?

    Facebook从04年的哈佛校园的学生项目在短短的7-8年的时间中快速增长为拥有10亿用户的世界上最大的社交网络,又一次见证了互联网创业成功的奇迹.同时它的产品研发流程也成为了众多互联网产品公司的追 ...

  6. 转自fineui论坛:解决fineui框架开发中的Designer.aspx.cs丢失问题

    在开发的时候碰到个问题,本来好好的Edit.aspx  Edit.aspx.cs  Edit.Designer.aspx.cs编辑Edit.aspx然后保存,编译的时候 发现Edit.aspx.cs里 ...

  7. Ethical Hacking - NETWORK PENETRATION TESTING(19)

    MITM-DNS Spoofing DNS Spoofing allows us to redirect any request to a certain domain to another doma ...

  8. Markdown与LaTex使用语法整合

    Markdown学习 RUNOOB 简介 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档. Markdown 语言在 2004 由约翰·格鲁伯(英语:John Gr ...

  9. 题解 洛谷 P4694 【[PA2013]Raper】

    首先考虑题目的性质,不难发现光盘的花费是一个凸函数.当生产 \(0\) 张光盘时,其花费为 \(0\),随着光盘生产数的增加,最优情况肯定是先选择工厂便宜的时刻,所以花费会增长越来越快,因此其为一个下 ...

  10. javac不是内部或外部命令,也不是可运行的程序或批处理文件的错误解决方法(Windows10/Windows7)

    前言:在配置JDK环境变量后,java显示正常,javac则显示javac不是内部或外部命令,也不是可运行的程序或批处理文件.造成javac不是内部或外部命令,也不是可运行的程序或批处理文件的问题一般 ...