如何在本地安装现有系统python模块的扩展?

时间:2013-09-12 19:14:01

标签: python module

我在远程系统上安装现有Python模块的扩展时遇到问题,我没有root访问权限,例如安装mpl_toolkits.basemap。系统 mpl_toolkits mpl_toolkits.basemap,我无法将basemap安装到系统范围的网站包目录(没有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并修改任何代码,以便从basemap而不是预期的mpl_toolkits_ext导入mpl_toolkits

这样可行,但不够优雅且容易出错。有没有“正确”的方法来安装Python模块的扩展?我希望Python首先搜索系统的mpl_toolkits,然后如果在放弃之前没有找到任何内容来检查mpl_toolkits$HOME/.local/lib/pythonX.Y/site-packages/mpl_toolkits)的本地安装。

1 个答案:

答案 0 :(得分:0)

更改底图包(在此处提交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的路径之后)。