python包装导致导入错误

时间:2016-03-15 15:12:42

标签: python-3.x namespaces python-module

我有一个boost python生成一个共享对象,用于/home/user/service/org/boost_py.so中的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)

1 个答案:

答案 0 :(得分:0)

显然'pure_python / org'中没有文件或目录boost_py,这会产生错误。

如果存在,请编辑问题!

或者,提升的路径可能不在路径浏览器中,然后它就不会识别文件。