2013-07-04 31 views
14

Tôi đã cài đặt python 2.7.5 hoạt động tốt.NhậpError: Không có mô đun nào có tên là twisted.internet

Sau đó tôi cài đặt cào (theo tôi nghĩ, sử dụng nội bộ xoắn). Spider phế liệu của tôi cũng hoạt động tốt.

Tôi đã cài đặt xoắn:

sudo apt-get install python-twisted

Sau đó, tôi đã tạo ra một chương trình mẫu sử dụng Echo mã máy chủ thể hiện here

Dưới đây là đoạn code

from twisted.internet import protocol, reactor 


class Echo(protocol.Protocol): 
    def dataReceived(self, data): 
     self.transport.write(data) 

class EchoFactory(protocol.Factory): 
    def buildProtocol(self, addr): 
     return Echo() 

reactor.listenTCP(1234, EchoFactory()) 
reactor.run() 

Tôi cố gắng chạy mã này sử dụng lệnh này:

$ python twistedTester.py 
Traceback (most recent call last): 
    File "twistedTester.py", line 1, in <module> 
    from twisted.internet import protocol, reactor 
ImportError: No module named twisted.internet 

Bất cứ ai có thể giúp tôi với cách tôi có thể gỡ lỗi tại sao gói xoắn của tôi không được cài đặt bằng Python?

+0

Thử chạy 'which python' - nó cho bạn biết điều gì? Điều gì về 'mà python2.7'? Làm thế nào về 'python -c" nhập khẩu xoắn, in (xoắn) "'? Bạn có lẽ có một tập tin gọi là 'twisted.py' ở đâu đó trên' sys.path'? – Glyph

Trả lời

9

Tôi đã tìm ra lý do tại sao lỗi này xảy ra. Vì một lý do nào đó, việc sử dụng apt-get để cài đặt gói python không cài đặt đúng.

Vì vậy, tôi phải tải xuống bóng tar và cài đặt gói từ chúng.

Tôi đã tải xuống tar xoắn từ here.

Tôi đã làm một tar xjf Twisted-13.1.0.tar.bz2 - điều này tạo ra một thư mục gọi Twisted-13.1.0

tới, cd Twisted-13.1.0 Cuối cùng, python setup.py install

này đã cho tôi một lỗi. Twisted yêu cầu một gói khác gọi là zope.interface. Vì vậy, tôi đã tải xuống tar ball cho zope.interface từ here. Sau đó, chạy lệnh này tar xzf zope.interface-3.6.1.tar.gz Đã tạo một thư mục có tên là zope.interface-3.6.1. Vì vậy, cd vào zope.interface-3.6.1 và chạy python setup.py install

Lưu ý: Tùy thuộc vào quyền của người dùng, bạn có thể muốn thực hiện các lệnh này ở chế độ giả. Chỉ cần thêm từ khóa sudo trước mỗi lệnh.

+4

'apt-get install python-twisted' thường luôn hoạt động. Nếu không, bạn nên gửi một báo cáo lỗi chi tiết cho nhóm distro của bạn (có thể là Debian hoặc Ubuntu), vì vậy họ có thể sửa lỗi này. Tuy nhiên, sẽ cần nhiều chi tiết hơn "không cài đặt đúng". –

+1

sudo python setup.py cài đặt – gbk

+1

người đàn ông bạn đã lưu ngày của tôi:] –

0

Tôi đã tìm ra lý do tại sao apt-get install python-twisted không đủ hoặc "cài đặt đúng", như bạn đã nói, user1700184.

Tôi sử dụng Debian Wheezy và Python 2.7.

Tôi chỉ phải di chuyển thư mục có tên là "xoắn" /usr/lib/python2.7/dist-packages/-/usr/lib/python2.7/

Cùng phải được thực hiện với gói "Zope" và bất kỳ ai khác mà bạn cài đặt nhưng không được lấy ra khi bạn cố gắng chạy mã của bạn.

Tuy nhiên, tại sao điều này thậm chí còn cần thiết trong trường hợp của tôi vẫn còn là một bí ẩn kể từ sys.path của tôi không bao gồm cả /usr/lib/python2.7//usr/lib/python2.7/dist-packages, vì vậy bất cứ là dưới dist-packages nên đã được lấy ra bởi người phiên dịch.

+2

Không được di chuyển các gói trong '/ usr'. Một cái gì đó trên hệ thống của bạn bị hỏng; đây là một lỗi trong debian. Vui lòng báo cáo lỗi. – Glyph

9

Nếu bạn sử dụng pip chỉ thử:

pip install twisted 

Các công trình tương tự với w3lib và lxml.

Trên một số hệ thống * nix, điều này có thể cho bạn lỗi quyền. Nếu điều đó xảy ra, hãy thử:

sudo -H pip install twisted 
+1

Điều này làm việc cho tôi, cũng, lưu ý, trên mac os X nó có thể nói "lỗi 1: quyền bị từ chối" trừ khi sudo được sử dụng. "sudo pip install twisted" –

+0

Điều này không hiệu quả đối với tôi http://pastebin.com/N7czaF5k –

0

Điều đó cũng xảy ra với tôi. Cuối cùng tôi tìm ra rằng có một tập tin có tên là twisted.py thư mục làm việc hiện tại của tôi. Tôi đã xóa twisted.pytwisted.pyc. Giải quyết vấn đề.

5

vui lòng đổi tên tệp twisted.py thành nội dung khác. bất cứ khi nào bạn nhập một hàm từ một tệp, trình thông dịch sẽ tìm kiếm tệp ở vị trí hiện tại và sau đó tìm kiếm trong thư viện. vì vậy nếu bạn có bất kỳ tệp nào có tên "twisted.py", bạn nên đổi tên nó.

sau khi đổi tên. không xóa được tệp twisted.pyc trước khi chạy lại.

0

Tôi nghĩ rằng cần lưu ý rằng nếu bạn sử dụng sudo để khởi động python bạn đang sử dụng python hệ thống mặc định ban đầu của bạn. Đây là KHÔNG con trăn mà bạn PATH trỏ tới. Ví dụ: nếu bạn đang sử dụng Anaconda và bạn đã cập nhật đường dẫn của mình sao cho which python điểm đến path/to/anaconda/bin/python, sudo which python sẽ vẫn trỏ đến usr/bin/python.

Vì vậy, rõ ràng là sudo python twistedTester.py sẽ không tìm thấy mô đun xoắn. Để có được xung quanh này, bạn nên rõ ràng vượt qua đường dẫn đến python anaconda. Giống như vậy:

sudo path/to/anaconda/bin/python twistedTester.py 
Các vấn đề liên quan