【发布时间】:2016-07-01 02:54:28
【问题描述】:
我在 /home/user/service/org/boost_py.so 中有一个 boost python 生成一个与 python 一起使用的共享对象(此文件夹不包含 __init__.py)
并且 /home/user/service 是 sys.path 的一部分,所以当我需要使用它时,就这样做
import org.boost_py #works
现在我在不同的目录中添加了一个纯 python 模块。
/home/user/service/pure_python/org/
__init__.py
tester.py
__init__.py 包含
__import__('pkg_resources').declare_namespace(__name__)
现在当 sys.path 是
['/home/user/service/','/home/user/service/pure_python']
和我
import org.boost_py #ImportError: No module named 'org.boost_py'
但我可以导入 org.tester。如何同时导入 org.tester 和 org.boost_py ? (我不能改变任何一个的位置)
更新: 在 pure_python 目录中找到 pth 文件,内容如下
import sys, types, os;
p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('org',));
ie = os.path.exists(os.path.join(p,'__init__.py'));
m = not ie and sys.modules.setdefault('org', types.ModuleType('org'));
mp = (m or []) and m.__dict__.setdefault('__path__',[]);
(p not in mp) and mp.append(p)
【问题讨论】:
标签: python-3.x namespaces python-module