как импортировать a.py не в папку - PullRequest
4 голосов
/ 14 мая 2010
zjm_code
    |-----a.py
    |-----a
          |----- __init__.py
    |-----b.py

в a.py - это:

c='ccc'

в b.py это:

import a

print dir(a)

когда я запускаю b.py, он показывает (импортирует папку 'a'):

['__builtins__', '__doc__', '__file__', '__name__', '__path__']

и когда я удаляю папку, она показывает (импортирует a.py):

['__builtins__', '__doc__', '__file__', '__name__', 'c']

поэтому мой вопрос:

как импортировать a.py через не удаляемую папку

спасибо

обновлен

Я использую imp.load_source, поэтому в b.py это:

import imp,os
path = os.path.join(os.path.dirname(__file__), os.path.join('aaa.py'))
ok=imp.load_source('*',path)
print ok.c

теперь все в порядке и выведите 'ccc'

и

как показать 'ccc' через "print c" not через "print ok.c" ???

спасибо

updated2

теперь все в порядке:

imp.load_source('anyname',path)

from anyname import *
print c

это показывает 'ccc'

updated3

это тоже нормально:

import imp,os
imp.load_source('anyname','aaa.py')
from anyname import *
print c

Ответы [ 2 ]

2 голосов
/ 14 мая 2010

Использовать imp.load_module - там вы можете указать каталог файлов, переопределяя поведение импорта.

1 голос
/ 14 мая 2010

Переименуйте папку с другим именем. Папка с тем же именем имеет приоритет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...