2017-02-19 53 views
1

我有兩個包(diretories)Python的包裝不能在我的Python項目導入類處理程序

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

您正在使用哪種版本的Python? Python 2和3有不同的處理包結構的方法。另外,請確保您的文件名拼寫正確。 '__init __。py'你在這段代碼中寫了'__initi.py'。如果是複製粘貼,請糾正該錯誤,如果不是,請編輯您的問題以避免發生錯誤。 – Gemtastic

+0

使用python 2.7 – Mehdi

+0

http://stackoverflow.com/q/13437402/3763850也許這個問題及其答案可以幫助你關於scrapy。 – Gemtastic

回答

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 

但是,弄亂路徑需要你記住你已經做了什麼,可能不是你想要的東西。

+0

我在我的src文件夾中有一個main.py文件,並在代碼中添加了一個__init__.py文件,但得到了相同的錯誤 – Mehdi

+0

我更新了我的答案,並列出了導入內容的例子。你需要在你的問題中提供更多的代碼,因爲它會導致假設你正在嘗試使用普通導入。 – Gemtastic

+0

我無法加載'crawler/crawler.py':沒有名爲src.textmining的模塊 – Mehdi