プロジェクトから、scrapy と同じディレクトリにないパッケージをインポートしようとしています。プロジェクトのディレクトリ構造は次のとおりです。
Main
__init__.py
/XPaths
__init.py
XPaths.py
/scrapper
scrapy.cfg
/scrapper
__init.py
settings.py
items.py
pipelines.py
/spiders
myspider.py
xpaths.py
内からアクセスしようとしていますmyspider.py
。これが私の試みです:
1)from Main.XPaths.XPaths import XPathsHandler
2)from XPaths.XPaths import XPathsHandler
3)from ..Xpaths.XPaths import XPathsHandler
これらはエラーで失敗しました:
ImportError: No module named .......
私の最後の試みは:
4)from ...Xpaths.XPaths import XPathsHandler
これもエラーで失敗しました:
ValueError: Attempted relative import beyond toplevel package
私は何を間違っていますか?XPaths
は Scrapy から独立しているため、ファイル構造はそのままにしておく必要があります。
//編集
@alecxe コメントに続いてさらにデバッグを行った後、パスをmain
内に追加して、 sys.path
xpath をインポートする前に出力してみました。奇妙なことに、scrapper
scrapy を実行するとディレクトリがパスに追加されます。ここに私が追加したものがあります:
'C:\\Users\\LaptOmer\\Code\\Python\\PythonBackend\\Main'
そして、これが私が印刷したときに得られるものですsys.path
:
'C:\\Users\\LaptOmer\\Code\\Python\\PythonBackend\\Main\\scrapper'
なぜスクレイピーはそれをパスに追加するのですか?