How to make my Python module available system wide on Linux?
我自己做了一个小模块,我碰巧用了很多。每当我需要它时,我只需将它复制到我想要使用它的文件夹中。因为我很懒惰,所以我想安装它,这样我就可以从任何地方调用它,甚至是交互式提示。所以我读了一些关于在这里安装的内容,并得出结论,我需要将文件复制到/usr/local/lib/python2.7/site-packages。然而,这似乎没有任何作用。
有人知道我需要在哪里复制我的模块才能在系统范围内工作吗?
有一些方法可以在系统范围内安装python模块。您可能想看看distutils。这里可以找到distuils2(当前版本)的一个很好的教程。
您基本上需要编写一个文件
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提示符中键入
1 2 | # ~/.bashrc file export PYTHONPATH+=:/some/dir |
如果使用Ubuntu,请将文件复制到
1 | python -c"from distutils.sysconfig import *; print(get_python_lib())" |
如果您是唯一使用该模块的用户,请将文件复制到
两件事。
首先,模块必须(我相信)位于与模块名称匹配的目录中。
将该模块目录放在pythonpath中的一个目录下(我使用/usr/lib/pymodules/pythonv.x/)。您可以在路径中使用
1 2 | import sys print(sys.path) |
。
从python提示。