命名空间包冲突

2024-04-30 04:51:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个正在处理的包(LDB_Algebra)。它有一个额外的依赖于我创建的另一个包(LDB_LAPACK)。我创建了一个virtualenv并安装了以下每个包,如下所示:

$ virtualenv -p pypy ve_pypy
$ . ve_pypy/bin/activate
(ve_pypy) $ pip install LDB_LAPACK
...
(ve_pypy) $ python setup.py install
... (Installs LDB_Algebra)

每个ldb包下的__init__.py文件都有以下内容:

^{pr2}$

问题:

问题是,当我尝试使用ldb.algebra时,它报告找不到包。只是为了确保它没有完全丢失我尝试导入的所有东西ldb.lapack,而且效果很好。这表明我遇到了一个命名空间包问题。似乎有人问过类似的问题here(遗憾的是没有答案)。在研究我的virtualenv的目录结构后,我发现在ve_pypy/site-packages/下有一个用于ldb命名空间包的文件夹,其中包含lapack包,但不包括{}包。我还看到了一个egg文件,LDB_Algebra-0.3.2-py2.7.egg。在ldb目录中的egg文件中是一个带有适当名称空间声明的__init__.py文件(如上所述)。假设这应该是它从中获取ldb.algebra包的地方,但它没有在那里查找。在

问题:

  1. 有谁能通过推荐信来确认我所看到的是一个已知的问题(即,我并不是做了一些导致所有这些麻烦的轻微错误)?eggs和w/e创建的pip安装方法(位于site-packages下的ldb包目录)是否根本不兼容?

  2. 假设第一个问题的答案是我的包安装方法根本上是有缺陷的,那么有没有更简单的方法从pypi安装LDB_LAPACK包,从本地目录安装LDB_Algebra包?我不是setuptools的天才,所以答案可能很简单(不要忽略显而易见的)。


Tags: pip文件方法答案py目录virtualenvegg