2013-08-30 2 views
0

Как перезагрузить импортированный файл с помощью python?Python 2.7 как импортировать и повторно импортировать

def ClickOpenMyFile(self): 
    import myfileinquestion 

Я хочу, чтобы unimport и импортировать обратно, если уже был импортирован ...

Он supposded работать? Нет ошибки, но не работают для меня

try: 
    import myfile 
except: 
    reload(myfile) 
+0

http://stackoverflow.com/questions/437589/how-do-i-load-reload-a-python-module – Vladimir

+0

Это не для перезагрузки, если оно изменено, но перезагружается в любом случае, если оно уже загружено –

ответ

0

Хорошо, реальная выгрузка не существует на Python. (Как Владимир уже упоминалось)

Предположим, у вас есть файл foo.py со следующим содержанием:

NAME = "MyName" 
def foo_funct(): 
    print "foo.foo_funct called", NAME 

Импорт и reloding работает отлично:

>>> import foo 
>>> foo.foo_funct() 
foo.foo_funct called MyName 
>>> foo.NAME = "ANewName" 
>>> foo.foo_funct() 
foo.foo_funct called ANewName 
>>> reload(foo) 
<module 'foo' from 'foo.pyc'> 
>>> foo.foo_funct() 
foo.foo_funct called MyName 

Если я понял, вы правы, это это то, что вы хотите:

try: 
    reload(foo) 
except NameError: 
    import foo 

перезагрузка потерпит неудачу с именемError, если foo еще не я mported. Итак, поймайте это и выполните нормальный импорт.

0

Прежде всего, есть много подобных вопросов. Например, этот: How do I unload (reload) a Python module?

Нет общего способа отслеживания изменений в уже загруженных модулях; вам может потребоваться отследить любые творения. Однако есть некоторые доступные модули, которые выполняют перезагрузку, если исходный код был изменен. В некоторых случаях tornado.autoreload может быть вам полезна.

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