pip uninstall пространство имен подпакет
Как я могу удалить с помощью pip один из дистрибутивов, которые предоставляют подпакеты пакета пространства имен, не ломая программы, которые используют только подпакеты этого пакета пространства имен из оставшихся дистрибутивов?
У меня есть 2 дистрибутива (дистрибутив {1,2}), обеспечивающих 2 подпакета (package{1,2}) пакета пространства имен (namespace1):
distribution1 / namespace1 / __ init__.py:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
distribution1 / namespace1 / package1 / __ init__.py:
from module1 import function1
distribution1 / namespace1 / package1 / module1.py:
def function1():
pass
distribution1 / setup.py:
from setuptools import find_packages, setup
setup(
name="distribution1",
version="0.1",
packages=find_packages())
distribution2 / namespace1 / __ init__.py:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
distribution2 / namespace1 / package2 / __ init__.py:
from module2 import function2
distribution2 / namespace1 / package2 / module2.py:
def function2():
pass
distribution2 / setup.py:
from setuptools import find_packages, setup
setup(
name="distribution2",
version="0.1",
packages=find_packages())
И тестовая программа:
main.py:
from namespace1.package1 import function1
function1()
Когда я устанавливаю оба дистрибутива и удаляю один из них (distribution2), пример программы завершается неудачно:
% for i in distribution* ; do ( cd $i ; pip install . ) ; done
Processing .../distribution1
Installing collected packages: distribution1
Running setup.py install for distribution1
Successfully installed distribution1-0.1
Processing .../distribution2
Installing collected packages: distribution2
Running setup.py install for distribution2
Successfully installed distribution2-0.1
% python main.py
% pip uninstall -y distribution2
Uninstalling distribution2-0.1:
Successfully uninstalled distribution2-0.1
% python main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
from namespace1.package1 import function1
ImportError: No module named namespace1.package1
Работает, когда "pip install --egg ." был использован в папке источника распространения. Но так как яйца считаются устаревшими в пользу колес, есть ли решение без этой опции - --egg?
Среда:
- Python 2.7.9
- setuptools 14.3.1
- пип 6.1.1
- колесо 0.24.0