簡體   English   中英

區分同名的Python模塊/安裝不同的名稱?

[英]Distinguishing between Python modules of the same name / installing with different name?

為 Firebase REST API 制作了兩個單獨的 Python 包裝器:

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

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

兩者都有其優點和缺點,所以現在我想在同一個程序中將一個用於某些 API 操作,另一個用於其他 API 操作。 問題是,安裝后,它們都被稱為firebase

是否有可能pip安裝一個或兩個以不同的名稱? 如果沒有,如果使用得當, import語句是否有智能區分?

導入模塊時,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。

這對於 pip 是不可能的。 PyPI 上的所有包都有唯一的名稱。 包通常需要和相互依賴,並假設名稱不會改變。

您最好的選擇是將庫中的所有代碼復制到您的代碼庫中,然后將其導入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM