如何在Linux上使我的Python模块在系统上可用?

How to make my Python module available system wide on Linux?

我自己做了一个小模块,我碰巧用了很多。每当我需要它时,我只需将它复制到我想要使用它的文件夹中。因为我很懒惰,所以我想安装它,这样我就可以从任何地方调用它,甚至是交互式提示。所以我读了一些关于在这里安装的内容,并得出结论,我需要将文件复制到/usr/local/lib/python2.7/site-packages。然而,这似乎没有任何作用。

有人知道我需要在哪里复制我的模块才能在系统范围内工作吗?


有一些方法可以在系统范围内安装python模块。您可能想看看distutils。这里可以找到distuils2(当前版本)的一个很好的教程。

您基本上需要编写一个文件setup.py,它告诉distutils要做什么。那么你可以简单地

1
python setup.py install

具有在系统范围内安装模块的根权限。有很多好的简单的例子,而且这是我能想象的最干净的方式。


答案是:这都是关于权限的。

将文件放在正确的位置是不够的,例如,实例/usr/local/lib/python2.7/dist-packages,您还需要确保运行的进程可以读取该文件,在本例中是python。

确保"其他"用户对该文件具有读取权限。打开bash控制台并执行以下操作:

1
2
sudo chmod o+r"yourmodule.py"
[Introduce the password]

在此之后,再次转到python并尝试导入:

1
import"yourmodule"

只要.py文件所在的路径存在于pythonpath+中,那么应该允许您导入该文件。


在python提示符中键入sys.path时列出的其中一个目录中。还可以通过修改PYTHONPATH环境变量来添加包含文件的目录:

1
2
# ~/.bashrc file
export PYTHONPATH+=:/some/dir


如果使用Ubuntu,请将文件复制到/usr/local/lib/python2.7/dist-packages。下面的命令将显示复制位置。

1
python -c"from distutils.sysconfig import *; print(get_python_lib())"

如果您是唯一使用该模块的用户,请将文件复制到~/.local/lib/python2.7/site-packages


两件事。

首先,模块必须(我相信)位于与模块名称匹配的目录中。

将该模块目录放在pythonpath中的一个目录下(我使用/usr/lib/pymodules/pythonv.x/)。您可以在路径中使用

1
2
import sys
print(sys.path)

从python提示。