You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python项目默认导入browser而非brython.browser?

问题描述

我希望为Brython创建独立可安装的.pyi类型包。主项目中的Brython文件myfile.py要求必须以from browser import document开头导入模块。

我的可安装项目结构如下:

../brython-signatures/src/
└── brython
    ├── browser
    │   ├── document.pyi
    │   └── __init__.py
    └── __init__.py

通过pip install -e ~/Projects/brython-signatures测试安装后,只能用from brython.browser import document导入模块。因特定原因无法修改现有包结构,请问有没有办法让主应用默认使用from browser import document而非from brython.browser import document?我曾尝试添加package-dir配置:

[package-dir]
browser="src/brython/browser"

但未生效。

解决方案

方法1:新增顶层browser包作为别名

在项目src目录下新建browser目录,创建__init__.py文件,内容如下:

# src/browser/__init__.py
from brython.browser import *
from brython.browser import __all__

修改打包配置(以setup.cfg为例),确保识别到新增的顶层包:

[metadata]
name = brython-signatures

[options]
package_dir =
    = src
packages = find:
include_package_data = true

安装后,browser将作为顶层包存在,可直接使用from browser import document,原有from brython.browser import document的写法也依然有效。

方法2:通过sys.modules注册顶层模块

若不想新增目录,可修改src/brython/__init__.py,添加以下代码:

# src/brython/__init__.py
import sys
from . import browser

sys.modules['browser'] = browser

此方法要求主项目先导入brython(如import brython),之后browser模块会被注册到全局,即可直接使用from browser import document。但如果主项目未提前导入brython,此方法会失效,因此更推荐第一种方案。

内容的提问来源于stack exchange,提问作者SteveJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 05:06:27