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インストールでツイストされたパッケージがピックアップされない理由をデバッグする方法を教えてください。
pip を使用する場合:
pip install twisted
同じことがw3libとlxmlでも機能します。
一部の* nixシステムでは、これにより許可エラーが発生する場合があります。その場合は、次を試してください。
Sudo -H pip install twisted
このエラーが発生した理由を見つけました。何らかの理由で、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.gz
zope.interface-3.6.1というフォルダーを作成しました。したがって、zope.interface-3.6.1にcdしてpython setup.py install
を実行します
注:ユーザーの権限によっては、これらのコマンドをSudoモードで実行することもできます。すべてのコマンドの前にキーワードSudoを追加するだけです。
ファイルの名前をtwisted.pyに変更してください。ファイルから関数をインポートするたびに、インタープリターは現在の場所でファイルを検索し、ライブラリを検索します。そのため、「twisted.py」という名前のファイルがある場合は、おそらく名前を変更する必要があります。
名前を変更した後。再度実行する前にtwisted.pycファイルを削除しないでください。
それは私にも起こりました。最後に、現在の作業ディレクトリにtwisted.py
という名前のファイルがあることがわかりました。 twisted.py
とtwisted.pyc
を削除しました。問題は解決しました。
Sudoを使用してpythonを起動している場合、元のデフォルトシステムpythonを使用していることに注意してください。これは[〜#〜] not [ 〜#〜]the python PATH
が指すもの。たとえば、Anacondaを使用していて、パスを次のように更新した場合which python
はpath/to/anaconda/bin/python
をポイントしますが、Sudo which python
は引き続きusr/bin/python
をポイントします。
したがって、明らかにSudo python twistedTester.py
はツイストモジュールを見つけられません。これを回避するには、anaconda pythonへのパスを明示的に渡す必要があります。そのようです:
Sudo path/to/anaconda/bin/python twistedTester.py
あなたが言ったように、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
の下にあるものは通訳者。