Использование двух библиотек Python с конфликтующими именами
Я хочу использовать две библиотеки Python (Google'sОблачная библиотека, и ихCloud SDK) в одном приложении, но у них есть конфликтующие имена (они оба используютgoogle
в их именах импорта базы и не использовать относительный импорт внутри страны). Как я могу использовать их в одном приложении?
Изменение кода библиотеки для использования правильного относительного импорта нецелесообразно. Кроме того, я знаю, что могу использовать virtualenv для доступа к этим библиотекам из отдельных приложений Python, но как мне получить к ним доступ из одного и того же приложения Python?
Детали конфликта именВот некоторые подробности об импорте. Когда я импортирую модуль из Облачной библиотеки (я запускаюimport google.cloud.datastore
), существует исключение относительно другого импорта в этой библиотеке:
>>> import libs.google.cloud.datastore
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\[ProjectDIR]\libs\google\cloud\datastore\__init__.py", line 52, in <module>
from google.cloud.datastore.batch import Batch
ImportError: No module named cloud.datastore.batch
Библиотека пытается сделать абсолютный импорт, а не относительный. Причина, по которой Google Cloud Library не может импортироватьgoogle.cloud.datastore.batch
это потому чтоgoogle
уже определено в SDK, существует конфликт имен:
>>> print google.__path__
['C:\\Program Files (x86)\\Google\\Cloud SDK\\google-cloud-sdk\\platform\\google_appengine\\google']
Потому что облачная библиотека использует абсолютный импорт, а имяgoogle
уже определен в SDK, тогда импорт завершится неудачно.