Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ImportError: No module named Cython.Distutils

I'm having a strange problem while trying to install the Python library zenlib, using its setup.py file. When I run the setup.py file, I get an import error, saying

ImportError: No module named Cython.Distutils`

but I do have such a module, and I can import it on the python command line without any trouble. Why might I be getting this import error?

I think that the problem may have to do with the fact that I am using Enthought Python Distribution, which I installed right beforehand, rather than using the Python 2.7 that came with Ubuntu 12.04.

More background: Here's exactly what I get when trying to run setup.py:

enwe101@enwe101-PCL:~/zenlib/src$ sudo python setup.py install
Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    from Cython.Distutils import build_ext
ImportError: No module named Cython.Distutils

But it works from the command line:

>>> from Cython.Distutils import build_ext
>>> 
>>> from fake.package import noexist
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named fake.package

Note the first import worked and the second throws an error. Compare this to the first few lines of setup.py:

#from distutils.core import setup
from setuptools import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import os.path

I made sure that the Enthought Python Distribution and not the python that came with Ubuntu is what is run by default by prepending my bash $PATH environment variable by editing ~/.bashrc, adding this as the last line:

export PATH=/usr/local/epd/bin:$PATH

and indeed which python spits out /usr/local/epd/bin/python... not knowing what else to try, I went into my site packages directory, (/usr/local/epd/lib/python2.7/site-packages) and give full permissions (r,w,x) to Cython, Distutils, build_ext.py, and the __init__.py files. Probably silly to try, and it changed nothing.

Can't think of what to try next!? Any ideas?

like image 646
Edward Newell Avatar asked Jun 19 '12 19:06

Edward Newell


4 Answers

Install Cython:

pip install cython
like image 132
Martin Thoma Avatar answered Oct 22 '22 07:10

Martin Thoma


Your sudo is not getting the right python. This is a known behaviour of sudo in Ubuntu. See this question for more info. You need to make sure that sudo calls the right python, either by using the full path:

sudo /usr/local/epd/bin/python setup.py install

or by doing the following (in bash):

alias sudo='sudo env PATH=$PATH'
sudo python setup.py install
like image 33
tiago Avatar answered Oct 22 '22 06:10

tiago


For python3 use

sudo apt-get install cython3

For python2 use

sudo apt-get install cython

Details can be read at this

like image 10
Tạ Lục Gia Hoàng Avatar answered Oct 22 '22 07:10

Tạ Lục Gia Hoàng


Run

which python

Thats the path to the python that your system has defaulted too then go to @tiago's method of:

sudo <output of which python> setup.py install

like image 8
ashley Avatar answered Oct 22 '22 07:10

ashley