【发布时间】:2013-09-15 19:45:27
【问题描述】:
是否可以使用http(s)、ftp、smb 或任何其他协议从 Internet 上 import 一个 Python 模块?如果是这样,怎么做?如果不是,为什么?
我想这是为了让 Python 更多地使用一种协议(读取文件系统)并使其也能够使用其他协议。是的,我同意它会慢很多倍,但一些优化和更大的未来带宽肯定会平衡它。
例如:
import site
site.addsitedir("https://bitbucket.org/zzzeek/sqlalchemy/src/e8167548429b9d4937caaa09740ffe9bdab1ef61/lib")
import sqlalchemy
import sqlalchemy.engine
【问题讨论】:
-
我想您可以将 URI 添加到
sys.path,但我认为您需要将其安装到本地安装点。我还没有听说过通过 HTTP 进行导入,虽然我对这个概念没有什么经验 -
可以将.py文件下载到任意目录,然后导入。
-
@7stud duh。我在这里要强调的一点是,无论文件是在目录中还是在 Internet 上,它最终都会在内存中结束,所以为什么要下载然后导入它的额外物流,当唯一的区别时,表面上看, 是“协议”。
-
@inspectorG4dget 什么是上述 URL 的绝对 URI,因为上面的代码不起作用。安装是一个明显的解决方案,但考虑到多个来源,它不会那么便携和实用。想象一下,不必在本地安装 3rd 方包,只需通过 Internet 导入它们!
-
值得指出的是,JavaScript 在浏览器中已经这样做了几十年,而由 Node.js 的原始创建者制作的 Javascript 运行时 Deno 使用 ES6+
importsyntax 透明地复制了这种行为:import { someExportedProperty } from 'https://any.website'。 Deno 会按照您的描述进行操作:它只是将远程依赖项下载到预先确定的永久缓存中(您可以将其设置为本地目录),然后执行主脚本。
标签: python network-protocols python-import python-exec