我正在尝试从我的项目中导入一个包,该包与 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
,并在导入 xpaths 之前打印它。奇怪的是,scrapper
当我运行 scrapy 时,目录会附加到路径中。这是我添加的内容:
'C:\\Users\\LaptOmer\\Code\\Python\\PythonBackend\\Main'
这是我打印时得到的sys.path
:
'C:\\Users\\LaptOmer\\Code\\Python\\PythonBackend\\Main\\scrapper'
为什么scrapy会将其附加到路径中?