簡體   English   中英

如何在本地為現有系統python模塊安裝擴展?

[英]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.

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