Как импортировать модуль Python, доступный через URL - PullRequest
5 голосов
/ 30 мая 2011

Моя компания использует какой-то инструмент архивации для контроля версий (Microsoft Windows), и я хотел бы сделать прямой импорт из него.Но я не могу найти способ сделать это.

Вот что я попробовал:

>>> import sys
>>> sys.path.append(r"http://some_path_copied_and_pasted/05.Autres%20Outils/Regen_Engine")
>>> sys.path
['C:\\Python26\\Lib\\idlelib', 'C:\\Python26\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\site-packages', 'http://some_path_copied_and_pasted/05.Autres%20Outils/Regen_Engine']
>>> import regen_engine as r
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    import regen_engine as r
ImportError: No module named regen_engine

Я попытался заменить "% 20" в URL на "" (пробелы), но результат тот же.Я также пытался использовать модуль imp, но не лучше.

Итак, вот мои вопросы:

  1. можно ли выполнить импорт из URL?
  2. если да, как я могу это сделать?

Может быть, решение может состоять в том, чтобы получить доступ к этому файлу с помощью какого-то другого, скрытого пути Sharepoint, поэтому тег для него будет уместным.

Ответы [ 2 ]

2 голосов
/ 30 мая 2011
import urllib
def urlimport(x):
    exec urllib.urlopen(x) in globals()

Это неправильный способ сделать это, вы никогда не должны использовать это в рабочем коде, это просто доказательство концепции.

1 голос
/ 19 декабря 2012

Попробуйте:

def dynamic_import_by_uri(file)
    file = os.path.abspath(file)
    exec open(file, 'rb') in globals()

Работает, но небезопасно для рабочей версии ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...