我的Python项目中有两个包(diretories)
src
/textmining
mining.py...def mining():#...
__init.py....__all__ = ["mining"]
/crawler
crawler.py
in crawler.py I use the mining class
mining=mining()
main.py
__init__.py
我的main.py如下:
scrapy_command = 'scrapy runspider {spider_name} -a crawling_level="{param_1}"'.format(spider_name='crawler/crawler.py',
param_1=crawling_level)
process = subprocess.Popen(scrapy_command, shell=True)
当我运行爬虫时,它会提示 runspider:错误:无法加载'Crawler.py':无法导入名称挖掘
答案 0 :(得分:0)
在每个文件夹中都需要__init__.py
,这是同一个软件包模块的一部分。
src
__init__.py
/textmining
__init__.py
mining.py
/crawler
__init__.py
crawler.py
为简单起见,您应该在src文件夹中添加main.py
并从那里调用要启动程序的函数,因为如果启动您的兄弟目录,从兄弟目录导入模块相当困难非根目录中的脚本。
main.py
from crawler import crawler
crawler.start_function()
crawler.py
from src.textmining import mining
miner = mining()
无需将所有内容都转换为python模块,您必须通过添加到路径将文件夹导入当前脚本或__init__.py
模块:
# In crawler.py
import sys
import os
sys.path.append(os.path.abspath('../textmining'))
import mining
然而,弄乱路径要求你记住你所做的事情,可能不是你想要的事情。