Python 3.x 如何进行自定义python导入?

Python 3.x 如何进行自定义python导入?,python-3.x,Python 3.x,有没有一种方法可以让Python中的导入语句具有自定义行为?怎么用?例如: import "https://github.com/kennethreitz/requests" import requests@2.11.1 import requests@7322a09379565bbeba9bb40000b41eab8856352e import gitloader repo = gitloader.repo("https://github.com/kennethreitz/requests"

有没有一种方法可以让Python中的导入语句具有自定义行为?怎么用?例如:

import "https://github.com/kennethreitz/requests"
import requests@2.11.1
import requests@7322a09379565bbeba9bb40000b41eab8856352e
import gitloader
repo = gitloader.repo("https://github.com/kennethreitz/requests")
requests = repo.from_commit("7322a09379565bbeba9bb40000b41eab8856352e")
或者,如果这不可能。。。这可以通过函数调用的标准方式实现吗?怎么用?例如:

import "https://github.com/kennethreitz/requests"
import requests@2.11.1
import requests@7322a09379565bbeba9bb40000b41eab8856352e
import gitloader
repo = gitloader.repo("https://github.com/kennethreitz/requests")
requests = repo.from_commit("7322a09379565bbeba9bb40000b41eab8856352e")

我想这样做有两个原因。第一个原因是方便(Golang风格的进口)。第二个原因是我需要对项目的插件模块进行加密验证。我使用的是Python3.x

您本质上要求的是定制导入步骤。这是可能的,这带来了一些定制挂钩

PEP目前不是您了解导入工作原理的来源;更确切地说,请参阅参考资料。在那里:

Python包括许多默认查找程序和导入程序。第一个知道如何定位内置模块,第二个知道如何定位冻结的模块。第三个默认查找器搜索模块的导入路径。导入路径是可以命名文件系统路径或zip文件的位置列表。它还可以扩展到搜索任何可定位的资源,例如由URL标识的资源

进口机器是可扩展的,因此可以添加新的查找器以扩展模块搜索的范围和范围


简而言之,您需要定义适当的查找器(查找您正在查找的模块)和适当的加载程序来加载这些模块

您本质上要求的是自定义导入步骤。这是可能的,这带来了一些定制挂钩

PEP目前不是您了解导入工作原理的来源;更确切地说,请参阅参考资料。在那里:

Python包括许多默认查找程序和导入程序。第一个知道如何定位内置模块,第二个知道如何定位冻结的模块。第三个默认查找器搜索模块的导入路径。导入路径是可以命名文件系统路径或zip文件的位置列表。它还可以扩展到搜索任何可定位的资源,例如由URL标识的资源

进口机器是可扩展的,因此可以添加新的查找器以扩展模块搜索的范围和范围


简而言之,您需要定义适当的查找器(查找您正在查找的模块)和适当的加载程序来加载这些模块

下载内容并在本地导入有什么问题?你也不能“导入”提交,git提交不是这样工作的。我想/需要保持文件系统只读。下载内容并在本地导入有什么问题?你也不能“导入”提交,git提交不是这样工作的。我希望/需要保持文件系统为只读。