[英]How can one locally install an extension to an existing system python module?
我無法在沒有root用戶訪問權限的遠程系統上安裝現有Python模塊的擴展,例如安裝mpl_toolkits.basemap 。 系統確實具有mpl_toolkits
但沒有 mpl_toolkits.basemap
,並且我無法將basemap
安裝到系統范圍的site-packages目錄(沒有root訪問權限)。
如果我將mpl_toolkits.basemap
安裝到$HOME/.local/lib/pythonX.Y/site-packages/mpl_toolkits
則
from mpl_toolkits.basemap import Basemap
要么無法找到basemap
因為sys.path
首先將其引導到了系統范圍的mpl_toolkits
軟件包中,或者如果sys.path
首先導致了我的本地安裝,那么我將無法使用整個系統范圍的mpl_toolkits
。
我的解決方案是將basemap
本地安裝為mpl_toolkits_ext.basemap
並修改任何代碼以從mpl_toolkits_ext
而不是預期的mpl_toolkits
導入basemap
。
這是可行的,但是不雅致且容易出錯。 有沒有“適當”的方法來安裝Python模塊的擴展? 我希望Python先mpl_toolkits
搜索系統的mpl_toolkits
,然后在找不到之前檢查我的mpl_toolkits
( $HOME/.local/lib/pythonX.Y/site-packages/mpl_toolkits
)的本地安裝。
通過更改底圖包(在此處提交https://github.com/matplotlib/basemap/pull/154 ),我可以采用以下方式導入系統外的mpl_toolkits.basemap:
(很快就做出來了,其中有些東西可能是不必要的)
底圖mpl_toolkits目錄中的mybasemap.py(可能需要更改它們):
from mpl_toolkits import *
import mpl_toolkits
import sys
sys.path.insert (0, './mpl_toolkits/')
sys.path.insert (1, './')
from basemap import Basemap
然后做:
from mybasemap import Basemap
在最終腳本中(將路徑添加到mybasemap.py之后)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.