2015-11-13 151 views
1

两个独立的Python包装已经作出了火力地堡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上的所有软件包都有唯一的名称。包通常需要并相互依赖,并且假定名称不会改变。

最好的办法是将库中的所有代码复制到你的代码库然后导入它。