区分同名的Python模块/使用不同的名称安装?

时间:2015-11-13 18:24:55

标签: python python-2.7 pip python-import easy-install

为Firebase REST API制作了两个单独的Python包装器:

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

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

两者都有它们的优点和缺点,所以现在我想使用一个来执行某些API操作,而将其他用于其他API操作,同样程序即可。问题是,安装后,它们都被称为firebase

pip是否可以使用其他名称安装一个或两个?如果没有,import语句是否具有区分的智能,如果使用正确的话?

2 个答案:

答案 0 :(得分:1)

点数不可能。 PyPI上的所有包都有唯一的名称。软件包通常需要并相互依赖,并假设名称不会更改。

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

答案 1 :(得分: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

但坦率地说,这是可怕的IMO。