Конфликт пакета пространства имен
У меня есть пакет, над которым я работаю ( 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
пакет. Я также вижу файл яйца, LDB_Algebra-0.3.2-py2.7.egg
, Внутри этого яичного файла в ldb
каталог является __init__.py
файл с соответствующей декларацией пространства имен (как указано выше). Предположительно это должно быть, где он получает ldb.algebra
пакет, но он не смотрит туда.
Вопросы:
Может ли кто-нибудь подтвердить ссылкой, что то, что я вижу, является известной проблемой (то есть, что я не просто делаю что-то немного неправильное, что вызывает все эти проблемы)? Созданы ли яйца и какой-либо метод установки пипсов (
ldb
каталог пакетов вsite-packages
) принципиально несовместимы?Предполагая, что ответ на первый вопрос заключается в том, что мой метод установки пакетов в корне ошибочен, существует ли более простой способ установки
LDB_LAPACK
пакет из пипи и томуLDB_Algebra
пакет из моего локального каталога? Я не специалист по setuptools или что-то в этом роде, поэтому ответ может быть очень простым (не забывайте об очевидном).
1 ответ
Видимо, это хорошо известная проблема. Решение, которое было предложено мне и, кажется, работает нормально, заключается в использовании pip install .
вместо python setup.py install
,