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

标签 python import namespaces

我在以下目录结构中有一个 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/

相关文章:

java:找出丢失符号的原始包

cocoa - Xcode : import folder/group

c# - 从 XElement 创建带有命名空间和架构的 XML

namespaces - 在构建供公众使用的 clojure 库时如何组织函数名称?

Python:ValueError:索引1处不支持的格式字符 '''(0x27)

python - Twisted Python、TLS 和客户端/服务器证书身份验证错误

python - 我可以在我的 Apache 服务器上运行 Bottle.py 而不中断我的 PHP 应用程序吗?

mysql - 将mysql数据库导入mariadb

c - C中 block 作用域和函数作用域的区别

Python Pandas to_html 样式