2015-11-13 1 views
1

Два отдельных обертки Python были сделаны для Firebase REST API:Отличие между модулями Python с тем же именем/установкой с другим именем?

https://github.com/mikexstudios/python-firebase

https://pypi.python.org/pypi/python-firebase/1.2

Оба имеют свои преимущества и недостатки, так что теперь я хочу использовать один для некоторых действий API, и другой для других действий API, в той же программе. Проблема в том, что при установке они оба известны как firebase.

Возможно ли установить pip один или оба с другим именем? Если нет, делает ли оператор import интеллект, чтобы отличить, если он используется правильно?

+0

Дубликат http://stackoverflow.com/questions/3678402/install-two-python-modules-with-same-name? – Pyderman

ответ

1

При импорте модуля python ищет пути в sys.path по порядку и останавливается при первом совпадении. Таким образом, простой import firebase не будет работать.

У вас есть хрупкое решение, чтобы выбрать тот или иной товар, но вы не сможете импортировать их обоих.

В любом случае, чтобы выбрать тот или иной вариант, вы можете просто импортировать внутреннее имя пакетов. Если мы посмотрим на открытых имен двух пакетов, мы получим:

https://github.com/mikexstudios/python-firebase 
firebase/ 
    __init__.py 
    Firebase 
    requests 
    urlparse 
    os 
    json 

https://github.com/ozgur/python-firebase 
firebase/ 
    __init__.py 
    atexit 
    process_pool 
    close_process_pool 
    urlparse 
    json 
    FirebaseTokenGenerator 
    http_connection 
    process_pool 
    JSONEncoder 
    ... 

Таким образом, вы можете либо выбрать первый импортируя имя присутствует только в нем:

from firebase import requests 

или второй, с теми же соображениями:

from firebase import atext 

Но, откровенно говоря, это ужасно ИМО.

1

Это невозможно с помощью пипса. Все пакеты на PyPI имеют уникальные имена. Пакеты часто требуют и зависят друг от друга, и предполагается, что имя не изменится.

Лучше всего скопировать весь код из библиотек в базу данных, а затем импортировать.