如何从存储库安装 Python 库?

如何从存储库安装 Python 库?

我基本明白apt-getUbuntu 软件中心,但有一件事我完全无法理解,那就是手动安装软件包,这根本apt-get行不通。Ubuntu 的文件结构和布局对我来说真的很奇怪。

我正在运行 Ubuntu 12.10,并且有一个Python 库我需要安装。这不是你可以通过apt-getpip

我下载了 zip 文件,没有任何问题。据我所知,我必须将其解压到 usr/share/doc(至少这是我的其他库存储要通过 Python 安装的文件的地方apt-get)。

不过,我不知道该怎么做,因为 GUI 不允许我执行任何不在我的帐户文件夹中的操作。据我所知,usr 在终端上是一些完全断开的文件结构(例如,我不能简单地将某个级别从我的用户帐户备份到 usr)。

安装这个 Python 库的正确方法是什么?

答案1

您不应该手动将文件(或实际上任何东西)放入/usr...- 该区域由 Ubuntu 的包管理器管理。

我想你需要这个库是因为你想编写一些 Python 脚本/程序,对吗?

在这种情况下,你可以把它放进去与您的程序/脚本位于同一文件夹中并做

from clientsubnetoption import ClientSubnetOption

请注意,该库依赖于 dnspython,幸运的是,它位于 Ubuntu 存储库中,因此你可以使用以下命令安装它

sudo apt-get install python-dnspython

(附注:通常 Python 库以“python eggs”的形式分发,并发布在称为 Python 包索引的中央“商店”中:https://pypi.python.org。然后可以使用特殊工具(例如easy_installpip或 )进行安装zc.buildout。您还可以使用 创建独立的 Python 环境virtualenvzc.buildout因此完全不需要在系统范围内安装复杂的库)

答案2

这里有一个建议,如果您还没有开始使用 IDE,那么您需要开始使用它。您提供的链接中有一个 .py 文件,您可以将其保存到计算机上的任何地方,然后使用 IDE 将其导入到活动的 Python 项目中。

一旦它进入项目,您就可以随意调用它。

我和你的情况一样,刚接触 Linux,刚开始进行 Python 编程,我个人很少使用终端来做任何与 Python 相关的事情。

通过终端导航,您可以通过输入“cd ..”返回目录。您可以通过输入“cd ~”直接跳转到主目录。

答案3

您可以在自己的任何 Python 脚本中使用该脚本的方法是将其添加到 pythonpath。这是 Python 解释器用来决定在哪里查找可导入的 Python 包的方法。要将目录或文件夹添加到 pythonpath,请在终端中输入以下内容:

export PYTHONPATH=$PYTHONPATH:/my/other/path

这会暂时将“my/other/path”添加到 python 路径中。“my/other/path”应该是 ClientSubnetOption 所在目录/文件夹的路径。例如,您可以将其放在目录中~/python_packages/clientsubnetoption~表示主目录。

如果您想要将此目录永久添加到 pythonpath,请将上述行添加到“.bashrc”文件的底部。它应该位于您的主目录中的某个位置,但它是一个隐藏文件,因此如果您使用 gui 来查找它,则需要按 来CTRL-h查看它。

您需要做的最后一件事是将 ClientSubnetOption 所在的目录放入 Python 包中。这实际上比听起来容易得多。我建议将 ClientSubnetOption 放在其自己的目录中,并使用 python_packages,因此路径看起来类似于 ~/python_packages/clientsubnetoption/。然后在 clientsubnetoption 目录中创建一个名为 的文件__init__.py。该文件需要在 init 前后有两个下划线才能工作。此文件不需要包含任何代码,它只需要存在于目录中即可创建 Python 包。

现在已经完成,通过打开文件 .bashrc 并在文件末尾添加以下行,将 clientsubnetoption 的路径添加到您的 python 路径中:

导出 PYTHONPATH=$PYTHONPATH:~/python_packages/clientsubnetoption/

在任何更改生效之前,您需要通过在终端中输入以下命令来重新启动 shell:

source ~/.bashrc

现在您应该能够通过在脚本中使用以下导入来导入 clientsubnetoption:

from clientsubnetoption import ClientSubnetOption

希望这不会太复杂。

相关内容