ImportError: нет модуля с именем twisted.internet - программирование
Подтвердить что ты не робот

ImportError: нет модуля с именем twisted.internet

Я установил python 2.7.5, который работает нормально.

Затем я устанавливаю scrapy (который, я думаю, использует скрученный внутри). Мой спайдер также хорошо работает.

Я установил скручен:

sudo apt-get install python-twisted

Затем я создал образец программы, используя код Echo Server, показанный здесь

Вот код

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

Я пытаюсь запустить этот код с помощью этой команды:

$ 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

Может ли кто-нибудь помочь мне с тем, как я могу отлаживать, почему мой скрученный пакет не подхвачен установкой Python?

4b9b3361

Ответ 1

Я понял, почему эта ошибка происходит. По какой-то причине использование apt-get для установки пакета python не устанавливало его правильно.

Итак, мне пришлось загрузить tar-мяч и установить пакет из них.

Я загрузил Twisted tar из здесь.

Я сделал tar xjf Twisted-13.1.0.tar.bz2 - создал каталог с именем Twisted-13.1.0

next, cd Twisted-13.1.0 Наконец, python setup.py install

Это дало мне ошибку. Twisted потребовал другой пакет под названием zope.interface. Итак, я загрузил tar ball для zope.interface из здесь. Затем запустите эту команду tar xzf zope.interface-3.6.1.tar.gz, которая создала папку с именем zope.interface-3.6.1. Итак, cd в zope.interface-3.6.1 и запустите python setup.py install

Примечание. В зависимости от ваших прав пользователя вы можете выполнять эти команды в режиме sudo. Просто добавьте ключевое слово sudo перед каждой командой.

Ответ 2

Если вы используете pip, попробуйте:

pip install twisted

То же самое работает с w3lib и lxml.

В некоторых системах * nix это может привести к ошибке разрешения. Если это произойдет, попробуйте:

sudo -H pip install twisted

Ответ 3

переименуйте файл twisted.py в другое. всякий раз, когда вы импортируете функцию из файла, интерпретатор будет искать файл в текущем местоположении, а затем он будет искать в библиотеке. поэтому, если у вас есть файл с именем " twisted.py", вы должны, вероятно, переименовать его.

после переименования. dont не удалите файл twisted.pyc, прежде чем запускать его снова.

Ответ 4

Я понял, почему apt-get install python-twisted недостаточно или "правильно установить его", как вы сказали, user1700184.

Я использую Debian Wheezy и Python 2.7.

Мне просто пришлось переместить папку с именем "twisted" от /usr/lib/python2.7/dist-packages/ до /usr/lib/python2.7/

То же самое должно быть сделано с пакетом "zope" и любым другим, который вы устанавливаете, но не извлекается при попытке запустить ваш код.

Однако, почему это даже необходимо в моем случае, остается загадкой, так как мой sys.path включает в себя как /usr/lib/python2.7/, так и /usr/lib/python2.7/dist-packages, поэтому все, что было под dist-packages, должно было быть получено интерпретатором.

Ответ 5

Это случилось со мной. Наконец, я выясню, что есть файл с именем twisted.py мой текущий рабочий каталог. Я удалил twisted.py и twisted.pyc. Проблема решена.

Ответ 6

Я думаю, стоит отметить, что если вы используете sudo для запуска python, вы используете исходный системный python по умолчанию. Это НЕ питон, на который указывает ваш PATH. Например, если вы используете Anaconda, и вы обновили свой путь таким образом, что which python указывает на path/to/anaconda/bin/python, sudo which python будет по-прежнему указывать на usr/bin/python.

Таким образом, очевидно, что sudo python twistedTester.py не найдет скрученный модуль. Чтобы обойти это, вы должны явно передать путь к python anaconda. Например:

sudo path/to/anaconda/bin/python twistedTester.py