Как обрабатывать пакеты, затеняя друг друга?

Я установил большинство своих модулей через пакеты 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 реализовать его распределение по нескольким местам в файловой системе.

Другие вопросы по тегам