Как обрабатывать пакеты, затеняя друг друга?
Я установил большинство своих модулей через пакеты Ubuntu, и поэтому они находятся в /usr/lib/python3/dist-packages
, Некоторые слишком старые или недоступны через Ubuntu, поэтому я установил их через pip, и они находятся в /usr/local/lib/python3.3/dist-packages
,
Все идет нормально. Тем не менее, оба содержат пакет mpl_toolkits
, но с другим содержанием. import mpl_toolkits.basemap
не удается, несмотря на наличие /usr/local/lib/python3.3/dist-packages/mpl_toolkits/basemap
, так как mpl_toolkits
находится первым в /usr/lib/python3/dist-packages/mpl_toolkits
, который содержит ряд модулей, но не basemap
,
Таким образом, на самом деле, уровень распределения mpl_toolkits
затенение по индивидуальному заказу mpl_toolkits
, Как правильно справиться с этим?
1 ответ
Обычно об этом должны заботиться посылки. __path__
атрибут:
In [4]: mpl_toolkits.__path__
Out[4]:
['/usr/local/lib/python3.3/dist-packages/mpl_toolkits',
'/usr/lib/python3/dist-packages/mpl_toolkits']
Однако, если второй mpl_toolkits
устанавливается после импорта первого файла, его необходимо перезагрузить для mpl_toolkits
реализовать его распределение по нескольким местам в файловой системе.