2012-06-19 40 views
39

Tôi đang gặp sự cố lạ khi cố cài đặt thư viện python bằng tệp setup.py của nó. khi tôi chạy tệp setup.py, tôi nhận được lỗi nhập, nói rằng ImportError: No module named Cython.Distutils, nhưng tôi có mô-đun như vậy và tôi có thể nhập nó vào dòng lệnh python mà không gặp bất kỳ sự cố nào. Tại sao tôi có thể nhận được lỗi nhập này ??python ImportError: Cython.Distutils

Tôi đã xem xét khoảng vài chục trường hợp lỗi nhập, đọc về nhập và gói, v.v., nhưng dường như không thể tìm ra. Bây giờ tôi đang ở hai ngày rưỡi bị mắc kẹt vào thời điểm này, vì vậy tôi nghĩ đã đến lúc yêu cầu giúp đỡ!

Thư viện được gọi là zenlib. Tôi nghĩ rằng vấn đề có thể phải làm với thực tế là tôi đang sử dụng Enthought Python Distribution mà tôi đã cài đặt ngay trước đó, thay vì sử dụng Python2.7 đi kèm với Ubuntu 12.04.

More nền: Dưới đây là chính xác những gì tôi nhận được khi cố gắng chạy setup.py:

[email protected]:~/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 

Nhưng nó hoạt động từ dòng lệnh:

>>> 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 

Lưu ý việc nhập khẩu đầu tiên làm việc và thứ hai ném một lỗi. Hãy so sánh này để vài dòng đầu tiên của 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 

tôi chắc chắn rằng các phân phối Enthought Python và không phải là trăn đi kèm với Ubuntu là những gì được điều hành bởi mặc định bằng cách thêm vào trước biến $ PATH môi trường bash của tôi bằng cách chỉnh sửa ~/.bashrc, thêm này như dòng cuối cùng:

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

và thực sự which python spits ra /usr/local/epd/bin/python ... không biết những gì khác để cố gắng, tôi đã đi vào thư mục gói trang web của tôi, (/usr/local/epd/lib/python2.7/site-packages) và cung cấp cho toàn quyền (r , w, x) đến Cython, Distutils, build_ext.py và các tệp __init__.py. Có lẽ ngớ ngẩn để thử, và nó không thay đổi gì cả.

Không thể nghĩ ra nên thử gì tiếp theo !? Bất kỳ ý tưởng?

+0

Tôi không thể nghĩ ra bất cứ điều gì, nhưng những gì trong 'sys.path' của bạn ? –

+2

hiện 'sudo python -c 'nhập Cython.Distutils'' làm việc? – jfs

+0

experiemnt của tôi mang lại kết quả tương tự, tôi di một bản cài đặt Python 2.7 trên ubuntu 12-04, cython, numpy, scipy. Lỗi tương tự Traceback (cuộc gọi gần đây nhất cuối cùng): Tệp "setup.py", dòng 4, trong từ Cython.Distutils import build_ext ImportError: Không có mô-đun tên Cython.Distutils. Không có câu trả lời nào dường như đã giải quyết vấn đề này. Kính gửi các chuyên gia HELP !!! – pythOnometrist

Trả lời

12

sudo của bạn không nhận được python đúng. Đây là một hành vi đã biết của sudo trong Ubuntu. Xem thông tin này question để biết thêm thông tin. Bạn cần phải chắc chắn rằng sudo gọi python đúng, hoặc bằng cách sử dụng đường dẫn đầy đủ:

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

hoặc bằng cách làm như sau (trong bash):

alias sudo='sudo env PATH=$PATH' 
sudo python setup.py install 
+0

Nó đã được một thời gian kể từ khi tôi đăng câu hỏi này, nhưng điều này thực sự là cách tôi giải quyết vấn đề. Một bài đăng gần đây nhắc tôi rằng nó vẫn mở. Sử dụng đề xuất của @ user91279 để tìm đường dẫn chính xác cho bạn. –

1

Trong CLI-python, import sys và tìm kiếm những gì bên trong sys.path
Sau đó cố gắng sử dụng export PYTHONPATH=whatyougot

-1

Chỉ cần cài đặt Cython từ http://cython.org/#download và cài đặt nó bằng cách sử dụng lệnh này

sudo python setup.py install 

Sau đó, chạy lệnh

sudo python -c 'import Cython.Distutils' 

và nó sẽ được cài đặt và thông báo lỗi sẽ biến mất.

4

Tôi chỉ có một lời khuyên cho bạn: Tạo virtualenv. Điều này sẽ đảm bảo bạn chỉ có một phiên bản của python và tất cả các gói của bạn được cài đặt cục bộ (và không phải trên toàn bộ hệ thống của bạn).
Phải là một trong các giải pháp.

8

Run

which python

Thats đường dẫn đến python rằng hệ thống của bạn đã cài đặt sẵn quá sau đó đi đến phương pháp @ Tiago của:

sudo <output of which python> setup.py install

52

Install Cython:

pip install cython 
+0

Điều này làm việc cho tôi, nhưng không phải cho phiên bản mới nhất của cython [0.22] nhưng đối với phiên bản trước 0.21.2 – dhilipsiva

0

Điều đó thật dễ.

Bạn có thể thử gói install cython trước tiên.

Nó sẽ nâng cấp easy_install được xây dựng bằng python của bạn.

3

Đối python3 sử dụng

sudo apt-get install cython3 

Để sử dụng python2

sudo apt-get install cython 

chi tiết có thể được đọc tại this