【问题标题】:python packaging results in import errorpython打包导致导入错误
【发布时间】: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


    【解决方案1】:

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

    如果存在,请编辑问题!

    或者,boost的路径可能不在路径浏览器中,那么它就不会识别文件。

    【讨论】:

      猜你喜欢
      • 2019-06-06
      • 2011-06-02
      • 2010-10-09
      • 2020-03-18
      • 2019-04-11
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 2021-05-03
      相关资源
      最近更新 更多