ImportError: No module named Cython.Distutils

2019-01-21 21:40发布

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?

9条回答
仙女界的扛把子
2楼-- · 2019-01-21 22:16

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

查看更多
趁早两清
3楼-- · 2019-01-21 22:21

Just install Cython from http://cython.org/#download and install it using this command

sudo python setup.py install

Then run the command

sudo python -c 'import Cython.Distutils'

and it will be installed and the error message will disappear.

查看更多
Deceive 欺骗
4楼-- · 2019-01-21 22:23

In the CLI-python, import sys and look what's inside sys.path
Then try to use export PYTHONPATH=whatyougot

查看更多
登录 后发表回答