Python包装无法导入类处理程序

时间:2017-02-19 10:16:21

标签: python-2.7

我的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':无法导入名称挖掘

1 个答案:

答案 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

然而,弄乱路径要求你记住你所做的事情,可能不是你想要的事情。