mayavi安装
Mayavi是python的一个包,提供方便的可视化方案。目前(20150809)Mayavi还没有py3的支持,以下安装环境在python 2.7.10下进行
安装Mayavi:
1. 通过pip install mayavi自动检测并且安装大部分的依赖包:
apptools、traits、traitsui、configobj、pyface、six
如果速度太慢可以参见之前随笔更改pip源为豆瓣源:pip install -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
2. 此时安装Mayavi仍然报错:ImportError: No module named vtk
需要安装vtk支持:
apt-get install vtk6
ubuntu 下使用apt-get 可以直接安装vtk,可能需要安装的依赖会比较多,需要花费较长时间,可参考之前随笔更改ubuntu源为阿里源:http://www.cnblogs.com/lyon2014/p/4715379.html
安装python-vtk:
apt-get install python-vtk
3. 此时,如果你用的python就是系统的python,应该就有了vtk模块,测试:
python -c 'import vtk'
没有报错就已经成功了。到这里就可以直接跳过3、4两步。
但是如果你和我一样用的是自己安装的python,或者用pyenv管理python版本,此时仍然找不到vtk模块,直到执行pyenv global system切换回系统python才能找到vtk模块
4. 安装vtk模块
vtk官网死活打不开,重新安装vtk遇到困难,但是没关系,还有另外的解决方案:将系统安装的vtk添加到自己的python中
首先找到系统安装的python-vtk路径,如ubuntu下,apt-get会默认安装在/usr/share/pyshared/以及相应编译的库包安装在:/usr/lib/pyshared/python2.7/vtk中,通过查看/usr/share/python-support/python-vtk.public文件可以看到相关信息
第一种方案是将这两个目录添加到PYTHONPATH环境变量中,个人比较反感污染PYTHONPATH变量,这会导致使用其他版本python的时候难以控制;
第二种方案是将/usr/share/pyshared/vtk 链接到当前python的lib目录下,并且把/usr/lib/pyshared/python2.7/vtk中的内容也链接过来:
cd ~/.pyenv/versions/2.7./lib/python2./site-packages
mkdir vtk
ln -s /usr/share/pyshared/vtk/* ./
ln -s /usr/lib/pyshared/python2.7/vtk/* ./
5. 更改python的unicode支持(建议先看完第6点再操作)
如果你和我一样使用pyenv,则默认编译安装的python支持的unicode是ucs2的,此时:
python -c 'import vtk'
则会报错:ImportError: /usr/lib/libvtkPythonCore.so.5.8: undefined symbol: _PyUnicodeUCS4_AsDefaultEncodedString
需要重新编译,使其支持UCS4
首先重新下载python:pyenv install -k 2.7.10
等待下载完成,开始安装的时候,取消,然后进入下载目录:
cd ~/.pyenv/sources/2.7.10
tar zxvf Python-2.7.10.tgz
cd Python-2.7.10/
./configure --prefix=/home/vagrant/.pyenv/versions/2.7.10 --enable-unicode=ucs4
上面prefix目录填你的pyenv对应的版本安装目录,使用绝对路径,一般来说是: /home/用户名/.pyenv/versions/版本号,只有配置为这个目录才能使pyenv调用的python为这次编译安装的python;如果你没有用pyenv,忽略此条;
make && make install
等待安装完成
测试:python -c 'import vtk'
没有报错,安装成功
6. 注意:一旦你完成第五步,意味着之前安装的包如果使用了ucs2编码,则会找不到关于ucs2的内容(比如numpy),这个时候需要卸载重装相应的包,所以关于unicode是很坑的一个地方,需要检查并且重新编译各种包,比较好的办法是,不要去更改原来的python,使用pyenv新安装一个python,并且编译支持ucs4,之后将可能用到的包一一安装;
7. 当你搞定所有的问题之后,终于可以安装mayavi了:
pip install mayavi
大功告成
出于学习的需要,会学习mayavi,但是我是一万个不情愿使用更新滞后的包的,在其支持py3之前应该不会使用,可能会被其他包替代吧。
继:
如果使用mayavi的话,最好还是切换到系统python,否则会有很多的依赖问题;
安装好mayavi之后,如果需要使用,则需要安装enthghout公司的其他包:VTK, appinst, apptools, envisage, traitsui, traits, pyface, configobj
这些包都可以通过pip快速安装,安装好之后,还需要依赖的界面工具,可以是wxPython或者是PyQT中的一种,否则无法成功使用traits包;
以PyQT为例,在安装PyQT之前,首先确认QT已经成功安装,然后再安装PyQT,这里比较郁闷的是pip上的pyqt好像都装不了,使用homebrew安装pyqt时发现依赖sip
mayavi安装的更多相关文章
- 【VTK】VTK 之一 环境准备
VTK总结 http://blog.sina.com.cn/s/articlelist_2216172153_3_1.html VTK教程http://blog.csdn.net/www_doling ...
- Python_14-绘图
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 安装mayavi和VTK库的血泪史
一开始安装VTK库是从官网上下载,但是怎么都找不到whl文件,只有exe文件(vtkpython-7.1.1-Windows-64bit.exe).下载安装之后再PyCharm中import vtk出 ...
- 细数用anaconda安装mayavi时出现的各种问题
这段时间需要利用mayavi做科学数据的处理,因此需要利用到mayavi库,但是官网上面的指示说:如果安装了anaconda,其中自带各种科学库,但是实践中,并没有发现mayavi. 官方网站导航:m ...
- 科学计算三维可视化---Mayavi入门(Mayavi介绍和安装)
Mayavi介绍 是基于VTK开发的可视化软件(更加高效),Mayavi完全由python编写,方便使用,而且可以使用python编写扩展,嵌入到用户程序中 安装要求 VTK >pip3 ins ...
- Pip,pywin32,whl文件下载网址,mayavi安装包,PyQt5安装,PyMuPDF安装等注意事项
(1)pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置. 例如目标位置是/usr/local/lib/python2.7/site-packages/ ,要安装xlrd 这个包 ...
- 安装PyQt5之后mayavi和VTK不能使用
mayavi在显示数据的过程中需要调用PyQt4的GUI方法产生应用框架.但是新发布的PyQt5和PyQt4在很多方面都是不兼容的,这也就导致了用mayavi编写的程序运行失败.在实践之后,我的解决方 ...
- 【转】linux和windows下安装python集成开发环境及其python包
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- pythonxy 安装
安装Numpy,发现错误: No module named msvccompiler in numpy.distutils; trying from distutils 目前python除了在 Win ...
随机推荐
- 76、django之内置Admin
本篇导航: 配置路由 定制Admin Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django ...
- Asp.Net下,基于Jquery的Ajax二级联动
最近做一个项目,要求实现二级联动效果.背景为:通过学院的选择,联动出专业选项.起初想直接用微软的控件实现Ajax效果,但是DropDownList控件会自动触发PostBack,在后台根本就不好控制, ...
- javascript设计模式——迭代器模式
前面的话 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示.迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也 ...
- HttpClient(一)HttpClient抓取网页基本信息
一.HttpClient简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包, 并且它支 ...
- Netty之二进制文件传输
传输会话简要 客户端发起一个文本请求给服务器端, 服务器端解析里面文本, 返回文件给客户端, 客户端解析文件 服务器端 因为示例文件比较小, 所以没有做分段传输, 而是直接一次性把整个文件byte[] ...
- 数据结构与算法(C/C++版)【树与二叉树】
第六章<树与二叉树> 树结构是一种非线性存储结构,存储的是具有"一对多"关系的数据元素的集合. 结点: A.B.C等,结点不仅包含数据元素,而且包含指向子树的分支.例如 ...
- 倒水问题 (FillUVa 10603) 隐式图
题意:本题的题意是给你三个杯子,第一二个杯子是空的,第三个杯子装满水,要求是量出一定容量d升的水.若是得不到d升的水,那就让某一个杯子里面的水达到d',使得d'尽量接近d升. 解题思路:本题是给出初始 ...
- 深入理解Java内存模型——volatile
volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会非常特别. 理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁 ...
- [Sqoop]利用sqoop对mysql运行DML操作
业务背景 利用sqoop对mysql进行查询.加入.删除等操作. 业务实现 select操作: sqoop eval \ --connect jdbc:mysql://127.0.0.1:3306/m ...
- Sql去重
distinct:用于返回唯一不同的值. 注意:1.语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的. 2.distinct必须放在开头 如select disti ...