Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在本地安装现有系统python模块的扩展?_Python_Module - Fatal编程技术网

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

如何在本地安装现有系统python模块的扩展?,python,module,Python,Module,在没有根访问权限的远程系统上安装现有Python模块的扩展时遇到问题,例如安装。系统确实有mpl\u工具包,但没有mpl\u工具包。basemap,我无法将basemap安装到系统范围的站点软件包目录(无根访问权限) 如果我将mpl_工具包.basemap安装到$HOME/.local/lib/pythonX.Y/site packages/mpl_工具包,那么 从mpl_toolkits.basemap导入basemap 将无法找到basemap,因为sys.path首先将其引导到系统范围的

在没有根访问权限的远程系统上安装现有Python模块的扩展时遇到问题,例如安装。系统确实有
mpl\u工具包
,但没有
mpl\u工具包。basemap
,我无法将
basemap
安装到系统范围的站点软件包目录(无根访问权限)

如果我将
mpl_工具包.basemap
安装到
$HOME/.local/lib/pythonX.Y/site packages/mpl_工具包
,那么

从mpl_toolkits.basemap导入basemap
将无法找到
basemap
,因为
sys.path
首先将其引导到系统范围的
mpl\u工具包
包,或者如果
sys.path
首先引导到我的本地安装,则我无法使用完整的系统范围的
mpl\u工具包

我的解决方案是在本地安装
basemap
作为
mpl\u工具包\u ext.basemap
,并修改任何代码以从
mpl\u工具包\u ext
导入
basemap
,而不是预期的
mpl\u工具包


这是可行的,但不雅观且容易出错。是否有一种“正确”的方式来安装Python模块的扩展?我希望Python在放弃之前先搜索系统的
mpl_工具包
,然后如果没有找到任何东西,检查我在本地安装的
mpl_工具包
$HOME/.local/lib/pythonX.Y/site packages/mpl_工具包
)。

更改basemap包(此处提交)我可以这样导入系统外mpl_toolkits.basemap:

(这很快就完成了,有些东西可能是不必要的)

basemap mpl_toolkits目录中的mybasemap.py(可能需要更改):

然后做:

from mybasemap import Basemap

在最后一个脚本中(将路径添加到mybasemap.py之后)。

imo最佳解决方案是使用virtualenv+virtualenvwrapper。您是否尝试过操纵sys.path来更改搜索顺序?但命名可能确实是个问题。但是如果你可以安装mpl_toolkits.basemap,为什么不在本地安装mpl_toolkits呢?我确实可以在本地安装完整的mpl_toolkits,但是(1)这并不比将本地安装的名称改为mpl_toolkits_ext和(2)更优雅远程系统相当复杂,经常更新/更改,我不希望维护像mpl_工具包这样的大型软件包。
from mybasemap import Basemap