Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

yinyayun/pyloader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

8 Commits

Repository files navigation

实现python文件的动态加载,包括对主module中依赖的一些文件的查找加载。

Python动态加载实现方案:

  • sys.path.append(),即将要加载的目录放入系统搜索路径列表。但是无法定制化加载。
  • 实现finder和loader
  • 添加钩子函数,为指定目录绑定finder

关于测试动态加载module目录结构(/package/demo) 说明

  • 001和002为不同版本的实现
  • 文件结构和文件名称都一致,唯一不同是sub.SubDenpendence.py的实现
  • ImportDemo依赖DenpendenceDemo,DenpendenceDemo依赖SubDenpendence
  • 系统查找的基础路径为package/demo
  • py文件的中module基路径与sub同级

为了能够进行module的多版本加载,使用第二种和第三种都是可行的,但是第三种更为方便一点,该方便主要在从sys.modules中清除已经缓存的module。

具体的不多说,还是看代码吧。

基于路径钩子实现的程序运行入口:CreateInsByHooks.py 基于钩子实现对应路径解析finder参见:LocalPathFinder.py:


更详细的说明,参见我的博客:yinyayun.top

About

指定目录下py文件的动态加载

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /