14

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

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

4

6 回答 6

14

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

您基本上必须编写一个文件setup.py来告诉 distutils 要做什么。然后你可以简单地

python setup.py install

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

于 2013-06-21T13:39:45.037 回答
5

答案是:一切都与权限有关

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

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

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

在此之后再次进入 python 并尝试导入:

import "yourmodule"

只要 .py 文件所在的路径存在于 PYTHONPATH + 该文件是可读的,那么您应该被允许导入它。

于 2014-01-08T15:35:09.800 回答
2

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

# ~/.bashrc file
export PYTHONPATH+=:/some/dir
于 2013-06-21T13:40:26.910 回答
2

如果您使用的是 Ubuntu,请将文件复制到/usr/local/lib/python2.7/dist-packages. 以下命令将告诉您复制的位置。

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

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

于 2013-06-21T13:39:37.467 回答
0

几件事。

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

将该模块目录放在 PYTHONPATH 中的一个目录下(我使用 /usr/lib/pymodules/pythonV.x/)。您可以使用在路径中找到合适的目录

import sys
print(sys.path)

从 python 提示符。

于 2016-04-03T21:25:36.320 回答
0

您还可以拥有一个包含所有全局模块的文件夹,例如my_modules/,然后本地化site-packages/您正在使用的 Python 版本的文件夹(您可以使用以下命令轻松找到它:)python -m site。现在,cd到这个文件夹并创建一个带有.pth扩展名的自定义文件。在此文件中,将绝对路径添加到包含您要在系统范围内使用的所有模块的文件夹并保存。您的模块现在应该可用

于 2020-07-26T21:38:47.527 回答