installing Mayavi with pip - no module named vtk

匿名 (未验证) 提交于 2019-12-03 00:56:02

问题:

I want to use Mayavi.

Situation

  • I use a MacBook Air, with OSX 10.7.3.
  • I use Python 2.7.2
  • I have virtualenv installed. But I have not used it for this installation.

I've manually installed all it's dependencies, including VTK.

For VTK, I followed its installation guide and installed the python wrapper.

Now if I open a new terminal window and open python, I can import vtk without any error.

Problem

I try to install Mayavi with the following command:

pip install mayavi

But the following error occurs:

Downloading/unpacking mayavi   Running setup.py egg_info for package mayavi     build_src     building extension "tvtk.array_ext" sources     building data_files sources     build_src: building npy-pkg config files      no previously-included directories found matching 'artwork'     no previously-included directories found matching 'docs/pdf' Requirement already satisfied (use --upgrade to upgrade): apptools in /Library/Python/2.7/site-packages (from mayavi) Requirement already satisfied (use --upgrade to upgrade): traits in /Library/Python/2.7/site-packages (from mayavi) Requirement already satisfied (use --upgrade to upgrade): traitsui in /Library/Python/2.7/site-packages (from mayavi) Requirement already satisfied (use --upgrade to upgrade): configobj in /Library/Python/2.7/site-packages (from apptools->mayavi) Requirement already satisfied (use --upgrade to upgrade): pyface in /Library/Python/2.7/site-packages (from traitsui->mayavi) Installing collected packages: mayavi   Running setup.py install for mayavi     Traceback (most recent call last):       File "", line 1, in        File "/Users/Yasser/build/mayavi/setup.py", line 498, in          **config       File "/Library/Python/2.7/site-packages/numpy-1.6.1-py2.7-macosx-10.7-intel.egg/numpy/distutils/core.py", line 186, in setup         return old_setup(**new_attr)       File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup         dist.run_commands()       File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands         self.run_command(cmd)       File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command         cmd_obj.run()       File "/Library/Python/2.7/site-packages/numpy-1.6.1-py2.7-macosx-10.7-intel.egg/numpy/distutils/command/install.py", line 57, in run         r = self.setuptools_run()       File "/Library/Python/2.7/site-packages/numpy-1.6.1-py2.7-macosx-10.7-intel.egg/numpy/distutils/command/install.py", line 31, in setuptools_run         return old_install_mod._install.run(self)       File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/install.py", line 573, in run         self.run_command('build')       File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command         self.distribution.run_command(command)       File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command         cmd_obj.run()       File "/Users/Yasser/build/mayavi/setup.py", line 303, in run         build_tvtk_classes_zip()       File "/Users/Yasser/build/mayavi/setup.py", line 290, in build_tvtk_classes_zip         gen_tvtk_classes_zip()       File "tvtk/setup.py", line 46, in gen_tvtk_classes_zip         from code_gen import TVTKGenerator       File "tvtk/code_gen.py", line 10, in          import vtk     ImportError: No module named vtk     Complete output from command /usr/bin/python -c "import setuptools;__file__='/Users/Yasser/build/mayavi/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /var/folders/53/_trhc_0x0fb6kvx6bw_wrk500000gn/T/pip-Z4hpsW-record/install-record.txt:     running install  running build  Traceback (most recent call last):    File "", line 1, in     File "/Users/Yasser/build/mayavi/setup.py", line 498, in       **config    File "/Library/Python/2.7/site-packages/numpy-1.6.1-py2.7-macosx-10.7-intel.egg/numpy/distutils/core.py", line 186, in setup      return old_setup(**new_attr)    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup      dist.run_commands()    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands      self.run_command(cmd)    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command      cmd_obj.run()    File "/Library/Python/2.7/site-packages/numpy-1.6.1-py2.7-macosx-10.7-intel.egg/numpy/distutils/command/install.py", line 57, in run      r = self.setuptools_run()    File "/Library/Python/2.7/site-packages/numpy-1.6.1-py2.7-macosx-10.7-intel.egg/numpy/distutils/command/install.py", line 31, in setuptools_run      return old_install_mod._install.run(self)    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/install.py", line 573, in run      self.run_command('build')    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command      self.distribution.run_command(command)    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command      cmd_obj.run()    File "/Users/Yasser/build/mayavi/setup.py", line 303, in run      build_tvtk_classes_zip()    File "/Users/Yasser/build/mayavi/setup.py", line 290, in build_tvtk_classes_zip      gen_tvtk_classes_zip()    File "tvtk/setup.py", line 46, in gen_tvtk_classes_zip      from code_gen import TVTKGenerator    File "tvtk/code_gen.py", line 10, in       import vtk  ImportError: No module named vtk  ---------------------------------------- Command /usr/bin/python -c "import setuptools;__file__='/Users/Yasser/build/mayavi/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /var/folders/53/_trhc_0x0fb6kvx6bw_wrk500000gn/T/pip-Z4hpsW-record/install-record.txt failed with error code 1 in /Users/Yasser/build/mayavi Storing complete log in /Users/Yasser/Library/Logs/pip.log Traceback (most recent call last):   File "/usr/local/bin/pip", line 8, in      load_entry_point('pip==1.1', 'console_scripts', 'pip')()   File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py", line 116, in main     return command.main(args[1:], options)   File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 141, in main     log_fp = open_logfile(log_fn, 'w')   File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 168, in open_logfile     log_fp = open(filename, mode) IOError: [Errno 13] Permission denied: '/Users/Yasser/Library/Logs/pip.log'

I think the problem is with vtk.

Can anyone help me?

Other Details

Running sudo pip install mayavi does not solve the problem.

I thought this might help

My PYTHONPATH is empty.

回答1:

Your pip is probably using a different python, kind of you have vtk installed using /usr/local/bin/python, while your pip binary uses /usr/bin/python.

Check it:

$ head -n1 $(which pip)

In order to get it solved, you can choose to use a virtualenv, or install pip using /usr/local/bin/python:

curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | /usr/local/bin/python

For more installation instructions, see http://www.pip-installer.org/en/latest/installing.html



回答2:

I'm on Debian but this should work for you as well

I was stuck with installing vtk into a virtualenv, after hours of search with no results I did the following and it worked.

  1. install python-vtk from repositories systemwide

  2. copy vtk folder from /usr/lib/pymodules/python2.7 to /PATH/TO/YOUR/VIRTUALENV/lib/python2.7/site-packages

In your case the system-wide python packages folder would probably be different but you can easily find it by firing up system python and entering the following:

import vtk,sys print(sys.modules['vtk'])

After this trick mayavi was succesfully installed into my virtualenv using pip install mayavi and pip install envisage.

Edit: instead of copying it might better to just symlink the folder in step 2



回答3:

I had the same problem and the first answer didn't help me because pip was in the right directory, but it turned out I didn't have vtk installed - running sudo apt-get install python-vtk fixed the issue and I was able to successfully run pip install mayavi after that.



回答4:

I had the same problem when installing mayavi with python installed in pyenv, and I solved this problem by copy directory to /home/myname/.pyenv/versions/2.7.12/lib/python2.7/site-packages, below is my method:

  1. install vtk and python-vtk

    sudo apt-get install vtk6 sudo apt-get install python-vtk
  2. try python -c "import vtk", if failed again, go to step 3

  3. the import error may caused by the loss of vtk package folder in your current python, so we should find the vtk folder and copy to your current python(most possible the python in pyenv shims directory)'s directory .

    the path of the vtk folder in my ubuntu is

    /usr/lib/python2.7/dist-packages/vtk

    just copy the vtk folder to your current python's /site-packages, e.g.

    cp -r /usr/lib/python2.7/dist-packages/vtk /home/myname/pyenv/versions/2.7.12/lib/python2.7/site-packages
  4. try python -c "import vtk" again.

  5. if no import error, just do

    pip install mayavi


回答5:

I installed vtk using Homebrew:

$ brew install vtk

hope this helps.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!