импортировать два пакета с одинаковым именем

Я использовал pip для установки двух нужных мне библиотек, которые связаны тем, что они делают, но не могут избавиться ни от одной из них. Проблема в том, что после распаковки они имеют одно и то же имя, и функции в них обоих импортируются как:

import the_package
from the_package import a, b

Обновление: я имею в виду импортировать the_package любым из предыдущих способов, не обязательно обоими или последовательно.

Поскольку я устанавливаю их через pip и устанавливаю из файл требований, чтобы мои товарищи по команде могли установить их таким же образом, я думаю, переименование пакетов / модулей не вариант (если это так, я ценю указание, как сделать это автоматически)

Одна вещь, которую я придумал, заключалась в том, чтобы дать pip какую-то опцию, которая устанавливала бы пакеты в каталоги с каким-то псевдонимом/префиксом, чтобы их имена могли быть разными, но pip docs мне не очень пригодился.

Заранее спасибо за любую помощь :D


person Gerard    schedule 07.08.2012    source источник


Ответы (2)


Вы должны добавить это при установке

pip install --install-option="--prefix=$PREFIX_PATH" package_name

и установите два пакета в разные папки. Затем импортируйте их как

import Folder1.mymodule as A
import Folder2.mymodule as B

Также можно сообщить создателям пакетов.

person Pratik Mandrekar    schedule 07.08.2012
comment
Извините, это не сработало для меня. Вот мой вывод: gist.github.com/3289595 - person Gerard; 08.08.2012
comment
Я считаю, что @Pratik просто использовал $PREFIX_PATH в качестве заполнителя. Вам нужно либо определить эту переменную среды, либо жестко запрограммировать префикс, который вы хотите. - person Chris Pratt; 08.08.2012
comment
Да, @ChrisPratt прав. Объявите свою собственную переменную пути для каждого из папок. Также вставленный вами текст указывает на проблему с привилегиями. Используйте sudo или укажите несистемный путь в своем пользовательском доме. - person Pratik Mandrekar; 08.08.2012
comment
Это полезно, но это только часть решения. Также см.: stackoverflow.com/ вопросы/32884206/ - person dmn; 31.07.2017

import the_package
from the_package import a, b

а потом:

import the_package as package_b
from the_package import a as a_, b as b_

используйте их соответственно, и это не будет конфликтовать с пространствами имен.

person James R    schedule 07.08.2012