如何处理LinuxPython依赖项?

如何处理LinuxPython依赖项?,第1张

如何处理Linux / Python依赖项?

我在这里看到两个单独的问题:

  1. 跟踪项目所需的所有python模块

  2. 跟踪项目中python模块所需的所有动态库。

对于第一个问题,我发现扩建是很好的帮助,尽管要花一点时间才能掌握。

在您的情况下,我将从为新项目创建目录开始。然后,我进入该目录并下载 bootstrap.py

wget http://python-distribute.org/bootstrap.py

然后,我将创建一个 buildout.cfg 文件:

[buildout]parts = qrproject        pythoneggs = pyqrenpre[qrproject]recipe = z3c.recipe.scriptseggs = ${buildout:eggs}entry-points= qrproject=qrprojectmodule:runextra-paths = ${buildout:directory}# This is a simple way of creating an interpreter that will have# access to all the eggs / modules that this project uses.[python]recipe = z3c.recipe.scriptsinterpreter = pythoneggs = ${buildout:eggs}extra-paths = ${buildout:directory}

在这种 buildout.cfg 我引用模块 qrprojectmodule (在 入口点[qrproject] 。这将创建一个斌/
qrproject运行该功能 运行 在模块 qrprojectmodule ,所以我也将创建文件 qrprojectmodule.py

import qrenpredef run():    print "Entry point for qrproject. Happily imports qrenpre module"

现在该使用您要使用的python二进制文件运行 bootstrap.py 了:

python bootstrap.py

然后运行生成的 bin / buildout

bin/buildout

这将在 bin / 目录中创建两个其他二进制文件 -bin / qrprojectbin / python
。前者是项目的主要二进制文件。每次您运行buildout时,它都会自动创建,并具有您要加载的所有模块和鸡蛋。第二个简单的方法是获得python提示符的简便方法,该命令会在其中装载所有模块和鸡蛋,以便于调试。很好的是,bin
/ buildout将自动安装已将鸡蛋(在您的情况下为pyqrenpre)指定为依赖项的所有python鸡蛋。

实际上,在运行 bin / buildout
的步骤中,您可能会遇到编译错误。这是因为您需要解决问题2:系统上所有可用的动态库。在Linux上,通常最好从包装系统中获取帮助。我假设您在这里使用的是Debian衍生版本,例如Ubuntu。

pyqrenpre网站指定您需要libqrenpre库才能使pyqrenpre正常工作。所以我用包管理器来搜索:

$ apt-cache search libqrenprelibqrenpre-dev - QR Code encoding library -- developmentlibqrenpre3 - QR Code encoding libraryqrenpre - QR Code enprer into PNG image

在这种情况下,我需要-dev软件包,因为它安装了编译python C模块所需的可链接库和头文件。另外,程序包管理器中的依赖系统将确保如果我安装
libqrenpre-dev ,我还将获得 libqrenpre3 ,这是运行时(即在模块编译之后)所需的。

因此,我安装了软件包:

sudo apt-get install libqrenpre-dev

完成后,重新运行bin / buildout,并且pyqrenpre模块将(希望)编译并成功安装。现在尝试运行 bin / qrproject

$ bin/qrproject Entry point for qrproject. Happily imports qrenpre module

成功!:-)

因此,总而言之:

  1. 使用buildout自动下载并安装项目所需的所有python模块/鸡蛋。

  2. 使用系统的软件包管理器来安装您使用的python模块所需的任何动态(C)库。

请注意,在许多情况下,软件包系统中已经提供了python模块的打包版本。例如,可以通过在Ubuntu上安装 python-imaging
软件包来获得pil 。在这种情况下,您不需要通过buildout安装它,也不必担心库是否可用-
程序包管理器将安装模块运行所需的所有依赖项。但是,通过构建完成它可以使分发项目并使它在其他系统上运行变得更加容易。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5640209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存