2011-05-30 71 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() 

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