gpt4 book ai didi

python - 更改当前 python 脚本的命名空间(具有模块名称的类)

转载 作者:行者123 更新时间:2023-12-04 17:00:35 24 4
gpt4 key购买 nike

我在以下目录结构中有一个 2.6 python 脚本和库:

+ bin
\- foo.py
+ lib
\+ foo
\- bar.py

我希望用户运行 bin/foo.py实例化 lib/foo.py 中的类.为了实现这一点,在我的 bin/foo.py 中脚本我有以下代码:
from __future__ import absolute_import
import foo
klass = foo.bar.Klass()

然而,这会导致:
AttributeError: 'module' object has no attribute 'bar'

即它认为 foo是它本身而不是图书馆 foo - 重命名 bin/foo.pybin/foo-script.py按预期工作。

有什么办法可以保留 bin/foo.py脚本和导入 lib/foo.py ?

最佳答案

当前目录默认在路径上,因此您需要在导入另一个 foo 之前将其删除。模块:

import sys
sys.path = [dir for dir in sys.path if dir != '']

或者,预先添加 lib目录,以便它优先:
import sys
sys.path = ['../lib'] + sys.path

关于python - 更改当前 python 脚本的命名空间(具有模块名称的类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com