跳转到主要内容

用于创建和导入虚拟模块的Python包。

项目描述

virtualmod

PyPI version

用于创建和导入虚拟模块的Python包。

安装

pip install virtualmod

示例

模块对象

使用virtualmod手动创建和注册模块。

import virtualmod

# Create a new empty virtual module
module = virtualmod.create_module('custom_module')

# Add attribute to module
module.key = 'value'


# Use decorator to add a function to the module
# NOTE: You can use `add_to_module(module, name='new_name')` to override the module attribute name
@virtualmod.add_to_module(module)
def module_function(name):
    print('Hello', name)


# Use decorator to add a class to the module
@virtualmod.add_to_module(module)
class ModuleClass:
    pass


# Import and use our virtual module
import custom_module

print('Key:', custom_module.key)
custom_module.module_function('virtualmod')
print(custom_module.ModuleClass())

类定义

virtualmod还提供了使用类定义来定义虚拟模块的能力。

import virtualmod


# Use class definition to define our virtual module "custom_module"
class CustomModule(virtualmod.VirtualModule):
    # Define the module's name (would be "CustomModule" otherwise)
    __module_name__ = 'custom_module'

    # Add an attribute
    key = 'value'

    # Add a function
    # NOTE: There is no `cls` or `self`
    def module_function(name):
        print('Hello', name)

    # Add a class to the module
    class ModuleClass:
        pass


# Import and use our virtual module
import custom_module

print('Key:', custom_module.key)
custom_module.module_function('virtualmod')
print(custom_module.ModuleClass())

覆盖现有模块

virtualmod的模块查找器在标准内置查找器之前注册。这意味着如果您将模块注册为现有模块的名称,则您的模块将首先被找到和加载。

import virtualmod

# Create a virtual module under the name "socket"
my_socket = virtualmod.create_module('socket')

# Import socket module
import socket

# Test if the loaded socket module is the one we created
print(socket is my_socket)

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

virtualmod-1.0.0.tar.gz (3.8 kB 查看哈希值)

上传时间

构建分布

virtualmod-1.0.0-py3-none-any.whl (3.0 kB 查看哈希值)

上传时间 Python 3

支持者