web-dev-qa-db-ja.com

ImportError:twisted.internetというモジュールはありません

python 2.7.5をインストールしました。これは正常に動作しています。

次に、scrapyをインストールします(内部でtwistedを使用していると思います)。私のスクレイピースパイダーも正常に動作しています。

私はツイストをインストールしました:

Sudo apt-get install python-twisted

次に、示されているEcho Serverコードを使用してサンプルプログラムを作成しました here

ここにコードがあります

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インストールでツイストされたパッケージがピックアップされない理由をデバッグする方法を教えてください。

14
user1700184

pip を使用する場合:

pip install twisted

同じことがw3libとlxmlでも機能します。

一部の* nixシステムでは、これにより許可エラーが発生する場合があります。その場合は、次を試してください。

Sudo -H pip install twisted
12
Milev

このエラーが発生した理由を見つけました。何らかの理由で、apt-getを使用してpythonパッケージをインストールすると、正しくインストールされませんでした。

そのため、tarボールをダウンロードして、そこからパッケージをインストールする必要がありました。

here からTwisted tarをダウンロードしました。

tar xjf Twisted-13.1.0.tar.bz2を実行しました。これにより、Twisted-13.1.0というディレクトリが作成されました。

次に、cd Twisted-13.1.0最後に、python setup.py install

これによりエラーが発生しました。 Twistedにはzope.interfaceという別のパッケージが必要です。そこで、zope.interfaceのtarボールを here からダウンロードしました。次に、このコマンドを実行しましたtar xzf zope.interface-3.6.1.tar.gzzope.interface-3.6.1というフォルダーを作成しました。したがって、zope.interface-3.6.1にcdしてpython setup.py installを実行します

注:ユーザーの権限によっては、これらのコマンドをSudoモードで実行することもできます。すべてのコマンドの前にキーワードSudoを追加するだけです。

9
user1700184

ファイルの名前をtwisted.pyに変更してください。ファイルから関数をインポートするたびに、インタープリターは現在の場所でファイルを検索し、ライブラリを検索します。そのため、「twisted.py」という名前のファイルがある場合は、おそらく名前を変更する必要があります。

名前を変更した後。再度実行する前にtwisted.pycファイルを削除しないでください。

6
user3800365

それは私にも起こりました。最後に、現在の作業ディレクトリにtwisted.pyという名前のファイルがあることがわかりました。 twisted.pytwisted.pycを削除しました。問題は解決しました。

1
Jobin

Sudoを使用してpythonを起動している場合、元のデフォルトシステムpythonを使用していることに注意してください。これは[〜#〜] not [ 〜#〜]the python PATHが指すもの。たとえば、Anacondaを使用していて、パスを次のように更新した場合which pythonpath/to/anaconda/bin/pythonをポイントしますが、Sudo which pythonは引き続きusr/bin/pythonをポイントします。

したがって、明らかにSudo python twistedTester.pyはツイストモジュールを見つけられません。これを回避するには、anaconda pythonへのパスを明示的に渡す必要があります。そのようです:

Sudo path/to/anaconda/bin/python twistedTester.py
0
Grr

あなたが言ったように、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の下にあるものは通訳者。

0
iammyr