2011-02-02 3 views
0

ОК, ребята, я не могу найти решение где-либо для моей проблемы, и я надеюсь, что решение является простым. Раньше у меня была плоская файловая система для моего проекта gae без папок. Я переформатировал некоторый код, и я попытался поместить его в папку. Я немного новичок, и я никогда раньше не делал ничего подобного, но ничто в Интернете не предполагает, что мне нелегко переместить мои файлы в папку. Я добавил файл __init__.py в папку, и я импортирую имя папки из моей основной программы. Однако при попытке получить доступ к определенной функции в одном из файлов, он задыхается и говорит AttributeError: 'module' object has no attribute 'site1_ripper'Импорт пользовательского пакета в python Google app engine

вот моя структура файла:

main.py 
SiteCrawlers\ 
    __init__.py 
    site1_ripper.py 

здесь являются важными частями файлов:

main.py

import SiteCrawlers 
class Updater(webapp.RequestHandler): 
    def get(self): 
     SiteCrawlers.site1_ripper.siteCrawler() 

site1_ripper.py

def siteCrawler() 
    #stuff here 

ответ

3

Я думаю, проблема в том, что вам нужно явно импортировать site1_ripper, если это не указано в __init__.py. Сделайте ваш главный импорт будет:

import SiteCrawlers.site1_ripper 
+0

благодаря этим решил. Не могли бы вы расшириться на «если это не указано в' __init __. Py' »? – Milo

+1

Если ваш файл '__init __. Py' имел строку' import site1_ripper', тогда он будет доступен, когда вы импортируете модуль в целом. Взгляните на [__init__.py] sqlite3 (http://svn.python.org/view/python/branches/release27-maint/Lib/sqlite3/__init__.py?view=markup) в стандартной библиотеке и попробуйте импортировать это в интерпретаторе python. Сравните эти два 'import sqlite3 как s; dir (s) 'и' import sqlite3.dbapi2 как t; реж (т) '. Они должны быть почти одинаковыми. – chmullig

+0

Еще раз спасибо за вашу помощь. – Milo

0

В вашей основной попытке файла:

from SiteCrawlers.site1_ripper import siteCrawler 

class Updater(webapp.RequestHandler): 
    def get(self): 
     siteCrawler() 
+0

спасибо за ваш вклад, но я использовал решение chmullig – Milo

Смежные вопросы