Я пытаюсь автоматически обновить модули Cython .so, которые использует моя программа python на лету. После того, как я скачал новый модуль и del module
и import module
Python, кажется, все еще импортируют старую версию.
Из этот вопрос , я пытался, но это не не работает:
from importlib import reload
import pyximport
pyximport.install(reload_support=True)
import module as m
reload(m)
С этот вопрос , я тоже пытался, и он тоже не работал:
del sys.modules['module']
del module
import module
У меня также попробовал это безуспешно:
from importlib import reload
import my_module
my_module = reload(my_module)
Есть идеи, как я могу импортировать файлы Cython .SO, импортированные на лету?
РЕДАКТИРОВАТЬ: Добавление кода для проверьте обновление и загрузите
update_filename = "my_module.cpython-37m-darwin.so"
if __name__ == '__main__':
response = check_for_update()
if response != "No new version available!":
print (download_update(response))
def check_for_update():
print("MD5 hash: {}".format(md5(__file__)))
s = setup_session()
data = {
"hash": md5(__file__),
"type": "md5",
"platform": platform.system()
}
response = s.post(UPDATE_CHECK_URL, json=data)
return response.text
def download_update(url):
s = setup_session()
with s.get(url, stream=True) as r:
r.raise_for_status()
with open(update_filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=8192):
if chunk:
f.write(chunk)
return update_filename
После загрузки нового SO-файла я вручную набрал команды, перечисленные выше.