2017-07-30 76 views
1

我有幾個模塊,我想重新加載而不必重新啓動Sublime Text,而我正在開發一個Sublime Text包。如何在python3.3中重新載入所有導入的模塊?

我正在運行Sublime Text build 3142,它隨python3.3一起運行它的軟件包/插件。但是在開發一個插件,我輸入我加入到路徑的第三部分模塊:

import os 
import sys 

def assert_path(module): 
    """ 
     Import a module from a relative path 
     https://stackoverflow.com/questions/279237/import-a-module-from-a-relative-path 
    """ 
    if module not in sys.path: 
     sys.path.insert(0, module) 

current_directory = os.path.dirname(os.path.realpath(__file__)) 
assert_path(os.path.join(current_directory, 'six')) # https://github.com/benjaminp/six 

import six 

但是,當我編輯模塊的源代碼six我需要關閉並重新打開崇高的文本,否則崇高文中沒有獲得對six python模塊的更改。


一些代碼,到目前爲止,我曾嘗試:

print(sys.modules) 
import git_wrapper 
imp.reload(find_forks) 
imp.reload(git_wrapper) 
imp.reload(sys) 
  1. Proper way to reload a python module from the console
  2. Reloading module giving NameError: name 'reload' is not defined
+1

您可能也想嘗試:https://packagecontrol.io/packages/AutomaticPackageReloader所以你不要不必自己實施重新加載。即使這樣做你想要的,但確保你定期測試,通過退出並重新啓動Sublime,一切仍然有效。 – OdatNurd

+0

它的工作!謝謝! – user

回答

4

要列出所有導入的模塊,你可以使用sys.modules.values()

import sys 
sys.modules.values() 

sys.modules是模塊的字符串名稱映射到它們引用的字典。

要重新加載模塊,你可以從上面並呼籲imp.reload循環在返回列表中的每一個:

import imp 
for module in sys.modules.values(): 
    imp.reload(module) 
相關問題