Jako eksperyment chcę zobaczyć, jak zaimportować moduł Pythona z adresu URL. Hipotetycznym celem byłoby zaimportowanie z centralnej lokalizacji, która aktualizuje moduły. Jak można to zrobić?W jaki sposób można importować moduł Python z adresu URL?
Moja próba jest następujący:
>>> 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 zidentyfikowali poprawkę przykładowym kodzie, który prowadzi reprezentację ciąg modułu zdalnego. Wynikowy kod jest następujący:
import urllib
def import_URL(URL):
exec urllib.urlopen(URL).read() in globals()
Naprawdę nie powinieneś. Nie ładuj kodu przez Internet i nie uruchamiaj go, chyba że chcesz zostać zhackowany. Powiedział, że jedynym błędem nie jest wywoływanie '.read()' w wyniku 'urlopen()'. –
Zamiast ładować z adresu URL, użyj systemu kontroli wersji (git, mercurial itp.), Aby zachować aktualność kodu. –
[Martijn Pieters] (http://stackoverflow.com/users/100297/martijn-pieters) Dzięki za twoje komentarze tam i za wykrywanie problemu '' 'read()' ''. W ten sposób powstaje ciąg znaków, który można wykonać. Jestem świadomy problemów związanych z bezpieczeństwem; jest to tylko do celów eksperymentalnych. Czy wiesz, czy jest jakiś wysiłek, aby zapewnić bezpieczniejsze podejście do tego pomysłu? – d3pd