Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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 LIB集成到系统中?_Python_Linux - Fatal编程技术网

将手动安装的python LIB集成到系统中?

将手动安装的python LIB集成到系统中?,python,linux,Python,Linux,我已经手动构建了numpy,scipy,matplotlib等-没有根权限(我需要新鲜的matplotlib)。安装在标准位置的所有LIB: ~/.local/lib/python2.7 现在,当我试图安装任何相关的东西时-synaptic建议我安装系统范围内的所有libs。有没有办法告诉synaptic使用本地安装的libs 我试图将~/.local/lib/python2.7/站点包链接到/usr/lib/python2.7——没有帮助 编辑: 如果我克隆了一个python包,并将setu

我已经手动构建了
numpy
scipy
matplotlib
等-没有根权限(我需要新鲜的
matplotlib
)。安装在标准位置的所有LIB:

~/.local/lib/python2.7
现在,当我试图安装任何相关的东西时-
synaptic
建议我安装系统范围内的所有libs。有没有办法告诉synaptic使用本地安装的libs

我试图将
~/.local/lib/python2.7/站点包链接到
/usr/lib/python2.7
——没有帮助

编辑

如果我克隆了一个python包,并将setup.py中的名称更改为ubuntu包的名称,然后构建:

python setup.py bdist --format=rpm
然后用alien将其转换为deb:

sudo alien -k my.rpm
然后安装deb:

sudo dpkg -i my.deb
然后,
synaptic
将其识别为一个包(记住我在setup.py中调整了名称)


但是我找不到一种方法让synaptic知道本地安装的python libs。

一个在系统级管理包的包管理器如何知道安装在用户目录中的东西,一个与系统级相反的东西

包管理器根据存储在包(无论是rpm、deb还是其他)和/或包存储库中的元信息解决依赖关系

为了实现你的目标,你可以选择两种选择中的任何一种

首先是从源代码构建特定于系统的软件包,然后通过软件包管理器进行安装。请参阅文档。它看起来像这样:

$ python setup.py bdist --format=rpm
$ rpm -i dist/$PACKAGE.rpm
这将使您的包管理器意识到已经提供了一些依赖项

这种方法可能有效,也可能无效

另一个首选选项是使用python包管理器,如,并将所有包安装在一个数据库中。这种方法有几个优点:

  • 您可以有多个不同的软件包集,并安装不同版本的软件包
  • 您可以选择将虚拟环境与系统范围内安装的软件包隔离

  • 您可以尝试使用
    python setup.py install--user
    或类似的工具从源代码处安装所需的软件包,而不是依赖于软件包管理器吗?@PierreGM:我就是这么做的!你读过我的问题吗?看起来我们彼此都不了解:我建议你自己安装“任何相关的东西”,从源头上说,不要使用像synaptic这样的软件包管理器。我可以理解,一般来说这是不可能的,但对于python来说,这是可以做到的:python本身既知道我的本地包,也知道系统范围的包。