0

我有一个正在处理的包(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)

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

__import__('pkg_resources').declare_namespace(__name__)

问题:

问题是当我尝试使用ldb.algebra它时报告它找不到包。只是为了确保它没有完全丢失我尝试导入的所有内容ldb.lapack并且工作正常。这向我表明我遇到了命名空间包问题。似乎在这里提出了类似的问题(遗憾的是没有答案)。在调查我的 virtualenv 的目录结构后,我发现ve_pypy/site-packages/在命名空间包下有一个文件夹,ldb其中包含lapack包但不包含algebra包。我还看到了一个 egg 文件,LDB_Algebra-0.3.2-py2.7.egg. 在ldb目录中的这个 egg 文件中是一个__init__.py带有适当命名空间声明的文件(如上)。大概这应该是它得到的地方ldb.algebra包,但它不在那里。

问题:

  1. 任何人都可以通过参考确认我所看到的是一个已知问题(即我不只是做一些轻微的错误导致所有这些麻烦)?egg 和 w/e 创建的 pip install 方法(ldb下的包目录site-packages)根本不兼容吗?

  2. 假设第一个问题的答案是我的软件包安装方法存在根本缺陷,是否有更简单的方法可以LDB_LAPACK从 pypi 安装软件包并LDB_Algebra从我的本地目录安装软件包?我不是 setuptools wiz 或任何其他人,所以答案可能非常简单(不要忽视显而易见的问题)。

4

1 回答 1

0

显然这是一个众所周知的问题。向我建议并且似乎工作正常的解决方案是使用pip install .而不是python setup.py install.

于 2015-09-15T01:05:22.867 回答