2011-05-30 74 views
5

我的公司使用某種版本控制檔案工具(Microsoft Windows),我想直接從它導入。但我找不到這樣做的方法。如何導入可通過url訪問的python模塊

這裏是我的嘗試:

>>> 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 

我試圖用「」(空格)替換URL中的「%20」,但結果是一樣的。我也試過使用imp模塊,但沒有更好的。

因此,這裏是我的問題:

  1. 是有可能使從URL導入?
  2. 如果是的話,我該如何做到這一點?

也許一個解決方案可能是通過Sharepoint的其他一些隱藏路徑來訪問此文件,因此它的標記將是合適的。

+0

從來沒有嘗試,但採取對xhtmlhook一看:http://www.boddie.org.uk/python/xhtmlhook/ – mouad 2011-05-30 10:40:42

+0

從我所瞭解的情況來看,這似乎更多地與xhtml有關的文檔目的。我的意思是,Sharepoint作爲一個Web門戶可見,但我仍然可以通過在具有完整URL的Web瀏覽器中直接訪問我的python腳本。 – 2011-05-30 11:43:40

回答

2
import urllib 
def urlimport(x): 
    exec urllib.urlopen(x) in globals() 

這是錯誤的做法,你不應該在生產代碼中使用它,它只是一個概念證明。

+0

按照你的例子,我開始通過閱讀腳本來測試它。但是現在我有一些連接問題:'URLError:'。所以我想我必須先檢查一下,我敢打賭它與這個不太酷的Sharepoint門戶有關,也許是某種訪問權限策略。不像看起來那麼簡單...... – 2011-05-30 11:48:06

+0

這就是你的網絡服務器不是我的代碼。 – 2011-05-30 11:54:37

+0

這很明顯,因此我的評論「我必須檢查」。從你的第一個答案,我明白,Python可以從URL導入(即使有點棘手);現在我的工作將是瞭解如何處理此Sharepoint服務器。所以謝謝你的證據。 – 2011-05-30 12:08:56

1

嘗試:

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

它的工作原理,但它是不安全的量產版...