解决python多版本时,import第三方模块出错的问题
2017-01-02 16:08
501 查看
转载自:http://bbs.fishc.com/thread-58472-1-1.html
由于学校导师要求需要使用 斯坦福大学的网络分析平台(SNAP),所以需要在python中导入第三方snap模块,
但是我电脑安装了python2.6,python2.7, python3.4三个版本,
按照 http://snap.stanford.edu/index.html 这个网址的指导,顺利安装snap.py,
但是每次启动python导入snap的时候,都会报下面的错误:
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6
网上google了一下,很多人倒入第三方模块的时候,经常会出现上面的错误,由于现在python2和python3一般都会在我们的电脑中同时存在,存在多版本。出现这个错误的原因是,第三方模块配置的时候默认会关联系统层面的python命令(特别是OS X和Linux),所以我们如果自己安装过的话,需要重新关联第三方模块和自己使用的python命令。
所以我们可以使用下面命令来重新关联:
install_name_tool -change /System/Library/Frameworks/Python.framework/Versions/2.7/Python /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib _snap.so
sudo cp _snap.so /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
otool -L /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_snap.so
以我的电脑为例,我的是OS X Yosemite,系统层级的python在/System/Library的文件夹下,然后我自己用的就放在/opt/local/Library/下,然后_snap.so是第三方模块的相关配置文件,所以第一条命令是install_name_tool -change来重新关联,第二条命令是将相关配置文件放入当前使用python命令的目录下,最后一条命令时用otool 来检查dylib下面使用的第三方库是否还有其他依赖。
之后,使用/opt/local/Library/下面的python命令再执行import snap等第三方模块,那么就不会再出现错误了!
PS:这些小问题很少出现,属于小众问题,但是要是真遇到,弄起来得花上不少时间,这里给大家分享一下,希望能帮助到大家
最新更新(2015/04/07):
有些朋友给我反应,通过上面的方法之后,import snap时依然报错,同样也是
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6
我建议如果能看错误details的话,看看是不是因为libpython2.7.dylib crash了,这种错误因为不同版本的python会找不同路径下的libpython2.7.dylib。
比如我的python可能会默认找/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib
然后我的python可能去找自己建立的目录/sw/lib/libpython2.7.dylib,这种情况会导致lib冲突
解决方法是:
看错误详细信息,看看是哪个目录下的lib冲突了,我的例子是系统报了/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib冲突,那么我的python去找/sw/lib/libpython2.7.dylib了,而snap就去找前面opt的路径,这样两个lib会冲突,那么我们可以用opt里面的libpython2.7.dylib 去将/sw/lib/libpython2.7.dylib覆盖掉,那么你会发现可以import
snap了
由于学校导师要求需要使用 斯坦福大学的网络分析平台(SNAP),所以需要在python中导入第三方snap模块,
但是我电脑安装了python2.6,python2.7, python3.4三个版本,
按照 http://snap.stanford.edu/index.html 这个网址的指导,顺利安装snap.py,
但是每次启动python导入snap的时候,都会报下面的错误:
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6
网上google了一下,很多人倒入第三方模块的时候,经常会出现上面的错误,由于现在python2和python3一般都会在我们的电脑中同时存在,存在多版本。出现这个错误的原因是,第三方模块配置的时候默认会关联系统层面的python命令(特别是OS X和Linux),所以我们如果自己安装过的话,需要重新关联第三方模块和自己使用的python命令。
所以我们可以使用下面命令来重新关联:
install_name_tool -change /System/Library/Frameworks/Python.framework/Versions/2.7/Python /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib _snap.so
sudo cp _snap.so /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
otool -L /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_snap.so
以我的电脑为例,我的是OS X Yosemite,系统层级的python在/System/Library的文件夹下,然后我自己用的就放在/opt/local/Library/下,然后_snap.so是第三方模块的相关配置文件,所以第一条命令是install_name_tool -change来重新关联,第二条命令是将相关配置文件放入当前使用python命令的目录下,最后一条命令时用otool 来检查dylib下面使用的第三方库是否还有其他依赖。
之后,使用/opt/local/Library/下面的python命令再执行import snap等第三方模块,那么就不会再出现错误了!
PS:这些小问题很少出现,属于小众问题,但是要是真遇到,弄起来得花上不少时间,这里给大家分享一下,希望能帮助到大家
最新更新(2015/04/07):
有些朋友给我反应,通过上面的方法之后,import snap时依然报错,同样也是
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6
我建议如果能看错误details的话,看看是不是因为libpython2.7.dylib crash了,这种错误因为不同版本的python会找不同路径下的libpython2.7.dylib。
比如我的python可能会默认找/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib
然后我的python可能去找自己建立的目录/sw/lib/libpython2.7.dylib,这种情况会导致lib冲突
解决方法是:
看错误详细信息,看看是哪个目录下的lib冲突了,我的例子是系统报了/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib冲突,那么我的python去找/sw/lib/libpython2.7.dylib了,而snap就去找前面opt的路径,这样两个lib会冲突,那么我们可以用opt里面的libpython2.7.dylib 去将/sw/lib/libpython2.7.dylib覆盖掉,那么你会发现可以import
snap了
相关文章推荐
- python3+openpyxl合并2个word到一个文档
- Python标准库 (pickle包,cPickle包)
- python_matplotlib
- [Python]实战——百度贴吧爬虫
- 6、Python 文件读写及文件系统
- Python pip 安装与 基本命令 python, pip 使用
- Python进制之间的转换
- 阿里云服务器使用问题fatal error: Python.h: No such file or directory解决
- python多进程编程
- python 守护进程(daemon)
- Python
- python中django使用MySQL时出问题如何解决
- 走进Python世界(3)----数据类型与变量
- 爬虫中的python使用技巧
- Sublime Text3 以及 SublimeREPL使用Virtualenv执行python
- python 随机抽取Fastq文件
- python的gzip库使用方法
- 【转】Python实现不同格式打印九九乘法表
- Python 中序列的索引与分片
- python 单例模式