1

Windows 32ビットでscrapyのすべての依存関係をインストールした後。スクレイピー スパイダーから実行可能ファイルをビルドしようとしました。スパイダー スクリプト「runspider.py」は、「python runspider.py」として実行すると正常に動作します。

実行可能ファイル「pyinstaller --onefile runspider.py」のビルド:

C:\Users\username\Documents\scrapyexe>pyinstaller --onefile runspider.py 19 情報: C:\Users\username\Documents\scrapyexe\runspider.spec 49 情報を書き込みました: アイコン、バージョン リソースを設定する機能をテストしています.. . 59 情報: ... 利用可能なリソースの更新 59 情報: UPX は利用できません。89 情報: フック hook-os を処理しています 279 情報: フック フック時間を処理しています 279 情報: フック hook-cPickle を処理しています 380 情報: フック hook-_sre を処理しています 561 情報: フック hook-cStringIO を処理しています 700 情報: フック フック エンコーディングを処理しています 720 情報: フック フック コーデックを処理しています 1351 情報: C:\Users\username\Documents\scrapyexe で PYTHONPATH を拡張しています 1351 情報: 分析をチェックしています 1351 情報: out00-Analysis.toc が存在しないため、分析を構築しています 1351 情報: 分析を実行しています out00-Analysis.toc 1351 情報: Microsoft.VC90 を追加しています。

py 3694 情報: runspider.py 3755 を分析しています 警告: django ルート ディレクトリが見つかりませんでした! 3755 情報: フック hook-django を処理しています 3785 情報: フック hook-lxml.etree を処理しています 4135 情報: フック hook-xml を処理しています 4196 情報: フック hook-xml.dom を処理しています 4246 情報: フック hook-xml.sax を処理しています 4296 情報: 処理していますhook hook-pyexpat 4305 情報: hook hook-xml.dom.domreg を処理しています 4736 情報: hook hook-pywintypes を処理しています 5046 情報: フック hook-distutils を処理しています 7750 情報: 非表示のインポート 'コーデック' が検出されました 7750 情報: 非表示のインポート ' 7750 INFO: ランタイムフックを探しています 7750 INFO: Analyzing rthook C:\python27\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_twisted.py 8111 INFO: Analyzing rthook C:

ビルドされたexe「runspider.exe」の実行:

C:\Users\ユーザー名\Documents\scrapyexe\dist>runspider.exe

トレースバック (最新の呼び出しが最後):

ファイル ""、2 行目、

ファイル "C:\python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py"、270 行目、load_module

exec(バイトコード、module.dict )

ファイル "C:\Users\username\Documents\scrapyexe\build\runspider\out00-PYZ.pyz\scrapy" の 10 行目

ファイル「C:\Users\username\Documents\scrapyexe\build\runspider\out00-PYZ.pyz\pkgutil」、行 591、get_data 内

ファイル "C:\python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py"、342 行目、get_data 内

fp = オープン (パス, 'rb')

IOError: [Errno 2] そのようなファイルまたはディレクトリはありません: 'C:\Users\username\AppData\Local\ \Temp\_MEI15522\scrapy\VERSION'

私はどんな種類の助けにも非常に役立ちます。Windows用のスクレイピースパイダーからスタンドアロンexeを構築する方法を知る必要があります。

助けてくれてありがとう。

4

2 に答える 2

3

scrapy/__init__.pyには、作者が使用している部分が見えますpkgutil.get_data()。pyinstaller に、scrapy/VERSION テキスト ファイルがデータ ファイルのように完全にパッケージ化されることを示す必要があるかどうか、または pkgutil.get_data が pyinstaller でまったく機能するかどうかはよくわかりませんが、私が使用した簡単なハックを次に示します。

ファイルに移動し、__init__.pyこれらの 2 行をコメントアウトして、選択した文字列に置き換えます__version__="scrap-123"__version__別のモジュールで参照されているため、必要になります。

__version__ = pkgutil.get_data(__package__, 'VERSION').decode('ascii').strip()
version_info = tuple(int(v) if v.isdigit() else v
                     for v in __version__.split('.'))
于 2014-12-30T06:31:56.543 に答える