2017-05-31 13 views
0

私はPythonで新しくなっています。 私は治療プロジェクトを持っています。私はscrapy crawl authorようscrapyクローラを実行すると、それは私に、このエラーが発生しますImportError:cqlengineという名前のモジュールはありませんが、Pythonコマンドで処理されました

from cassandra.cqlengine import connection 
from cassandra.cqlengine.management import sync_table, create_keyspace_network_topology 
from recentnews.cassandra.model.NewsPaperDataModel import NewspaperDataModel 

from recentnews.common.Constants import DEFAULT_KEYSPACE 


class RecentNewsPipeline(object): 
    def __init__(self): 
     connection.setup(["192.168.99.100"], DEFAULT_KEYSPACE, protocol_version=3, port=9042) 
     create_keyspace_network_topology(DEFAULT_KEYSPACE, {'DC1': 2}) 
     sync_table(NewspaperDataModel) 

    def process_item(self, item, spider): 
     NewspaperDataModel.create(
      title=item.title, 
      url=item.url, 
      domain=item.domain 
     ) 
     return item 

(news) (C:\Miniconda2\envs\news) E:\Shoshi\Python Projects\recentnews-scrapy\recentnews>scrapy crawl author 
2017-05-31 15:56:29 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: recentnews) 
2017-05-31 15:56:29 [scrapy.utils.log] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'recentnews.spiders', 'SPIDER_MODULES': ['recentnews.spiders'], 'ROBOTSTXT_OBEY': True, 'BOT_NAME': 'recentnews'} 
2017-05-31 15:56:29 [scrapy.middleware] INFO: Enabled extensions: 
['scrapy.extensions.logstats.LogStats', 
'scrapy.extensions.telnet.TelnetConsole', 
'scrapy.extensions.corestats.CoreStats'] 
2017-05-31 15:56:30 [scrapy.middleware] INFO: Enabled downloader middlewares: 
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 
'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 
'scrapy.downloadermiddlewares.retry.RetryMiddleware', 
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 
'scrapy.downloadermiddlewares.stats.DownloaderStats'] 
2017-05-31 15:56:30 [scrapy.middleware] INFO: Enabled spider middlewares: 
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 
'scrapy.spidermiddlewares.referer.RefererMiddleware', 
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 
'scrapy.spidermiddlewares.depth.DepthMiddleware'] 
Unhandled error in Deferred: 
2017-05-31 15:56:30 [twisted] CRITICAL: Unhandled error in Deferred: 

2017-05-31 15:56:30 [twisted] CRITICAL: 
Traceback (most recent call last): 
    File "C:\Miniconda2\envs\news\lib\site-packages\twisted\internet\defer.py", line 1301, in _inlineCallbacks 
    result = g.send(result) 
    File "C:\Miniconda2\envs\news\lib\site-packages\scrapy\crawler.py", line 95, in crawl 
    six.reraise(*exc_info) 
    File "C:\Miniconda2\envs\news\lib\site-packages\scrapy\crawler.py", line 77, in crawl 
    self.engine = self._create_engine() 
    File "C:\Miniconda2\envs\news\lib\site-packages\scrapy\crawler.py", line 102, in _create_engine 
    return ExecutionEngine(self, lambda _: self.stop()) 
    File "C:\Miniconda2\envs\news\lib\site-packages\scrapy\core\engine.py", line 70, in __init__ 
    self.scraper = Scraper(crawler) 
    File "C:\Miniconda2\envs\news\lib\site-packages\scrapy\core\scraper.py", line 71, in __init__ 
    self.itemproc = itemproc_cls.from_crawler(crawler) 
    File "C:\Miniconda2\envs\news\lib\site-packages\scrapy\middleware.py", line 58, in from_crawler 
    return cls.from_settings(crawler.settings, crawler) 
    File "C:\Miniconda2\envs\news\lib\site-packages\scrapy\middleware.py", line 34, in from_settings 
    mwcls = load_object(clspath) 
    File "C:\Miniconda2\envs\news\lib\site-packages\scrapy\utils\misc.py", line 44, in load_object 
    mod = import_module(module) 
    File "C:\Miniconda2\envs\news\lib\importlib\__init__.py", line 37, in import_module 
    __import__(name) 
    File "E:\Shoshi\Python Projects\recentnews-scrapy\recentnews\recentnews\pipelines.py", line 7, in <module> 
    from cassandra.cqlengine import connection 
ImportError: No module named cqlengine 

私はconda仮想を使用しています私は、このようなパイプラインのクラスを書かれているconda仮想環境を使用しています環境。

しかし、私はこのコードをpythonコマンドラインから実行するとうまくいきます。エラーなし:

(news) (C:\Miniconda2\envs\news) E:\Shoshi\Python Projects\recentnews-scrapy\recentnews>python 
Python 2.7.13 |Continuum Analytics, Inc.| (default, May 11 2017, 13:17:26) [MSC v.1500 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
Anaconda is brought to you by Continuum Analytics. 
Please check out: http://continuum.io/thanks and https://anaconda.org 
>>> from cassandra.cqlengine import connection 
>>> from cassandra.cqlengine.management import sync_table, create_keyspace_network_topology 
>>> from recentnews.cassandra.model.NewsPaperDataModel import NewspaperDataModel 
>>> from recentnews.common.Constants import DEFAULT_KEYSPACE 
>>> connection.setup(["192.168.99.100"], DEFAULT_KEYSPACE, protocol_version=3, port=9042) 
>>> create_keyspace_network_topology(DEFAULT_KEYSPACE, {'DC1': 2}) 
C:\Miniconda2\envs\news\lib\site-packages\cassandra\cqlengine\management.py:545: UserWarning: CQLENG_ALLOW_SCHEMA_MANAGEMENT environment variable is not set. Future versions of this package will require this variable to enable management functions. 
    warnings.warn(msg) 
>>> sync_table(NewspaperDataModel) 
...... 

from cassandra.cqlengine import connectionが完全にインポートされていることがわかります。 私は何が欠けていますか? scrapy crawl authorを使用してこのコードを実行すると、このコードが機能しないのはなぜですか?

+0

'from cassandra.cqlengine import connection'はオンラインです7.その行の前のステートメントは何ですか? 'python recentnews/pipelines.py'を呼び出すとどうなりますか?あなたの治療プロジェクトのどこかに 'cassandra.py'というモジュールがありますか? –

+0

@paultrmbrth:7行目の前に、いくつかの自動生成された行があり、コメントが付けられています。私は 'python recentnews/pipelines.py'についてお知らせします – Shoshi

+0

@paultrmbrth:同じエラーです。 'トレースバック(最新の呼び出しの最後):どのような私の他の質問についてのモジュールの名前cqlengine' – Shoshi

答えて

2

したがって、OPの治療プロジェクト(名前空間recentnews.cassandra)にはthere was a folder named recentnews/cassandra/が表示されました。

scrapyがアイテムのパイプラインクラスrecentnews.pipelines.RecentNewsPipelineをインポートし、importlibさん(recentnews/pipeline.pyの冒頭に)from cassandra.cqlengine import connectionの解釈はvirtualenvの-インストールcassandraパッケージ前に、ローカルrecentnews.cassandraモジュールを見つけました。

インポートするモジュールを確認する1つの方法は、ステートメントが失敗する前にimport cassandra; print(cassandra.__file__)を追加することです。

+0

それは私のようなnewbeのために本当に役立った。いいぞ – Shoshi

0

仮想環境を作成すると、デフォルトでユーザーがインストールしたパッケージはコピーされません。したがって、仮想環境でpip install casandra(またはパッケージが呼び出されたもの)を実行する必要があります。それはおそらくこの問題を解決するでしょう。

+0

私の仮想環境にcassandraが既にインストールされています。この質問で与えられたすべてのコマンドは、仮想環境上で実行されます。 – Shoshi

+0

OK。そうではありません。ノイズは申し訳ありません。 –

+0

私はPythonの新機能です。あなたは私にこのエラーに関する何か示唆を与えることができますか? – Shoshi

関連する問題