As an experiment, I want to see how to import a Python module from a URL. The hypothetical goal here would be to import from a central location which keeps the modules up-to-date. How could this be done?
My attempt is as follows:
>>> import urllib
>>>
>>> def import_URL(URL):
... exec urllib.urlopen(URL) in globals()
...
>>> import_URL("https://cdn.rawgit.com/wdbm/shijian/master/shijian.py")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in import_URL
TypeError: exec: arg 1 must be a string, file, or code object
EDIT: Martijn Pieters identified a fix for the example code that results in the string representation of the remote module. The resulting code is as follows:
import urllib
def import_URL(URL):
exec urllib.urlopen(URL).read() in globals()
.read()
on theurlopen()
result. – Hookwormread()
problem. That results in a string that can be executed. I'm aware of the security problems; this is just for experimental purposes. Do you know if there is any effort to have a more secure approach to this idea? – Foggy