【问题标题】:Where to put python third-party modules (lxml)?python 第三方模块(lxml)放在哪里?
【发布时间】:2012-12-17 22:17:16
【问题描述】:

我想编写一个使用 lxml 库的 Python 程序(请参阅http://lxml.de/)。当然,我想与其他人共享我的程序,并希望在不同的计算机上运行它。

现在,我有一个包含 lxml 模块的文件夹和一个执行导入的 python 文件。现在,此导入不起作用并引发异常。您可以在下图中查看所有详细信息和概览: http://www.qpic.ws/images/pythonprob.png

搜索此错误时,建议将 lxml 源文件夹的路径放入我的 PATH 中。但是:我希望程序可以在不同的计算机上运行,​​而不必操作它们的 PATHes/PYTHONPATHes!该模块应该只在本地上下文中被引用,这意味着,应该只驻留在我的程序旁边的文件夹中。我想,是lxml还是其他第三方模块集合都没有关系。

我的理解是否存在严重错误,或者是否有简单的解决方案可以满足我的需求?

系统: 蟒蛇 3.3 • Windows 7

提前致谢!

【问题讨论】:

  • 您可以使用sys.path.append() 注入路径。另一种方法是使用 Py2exe 或 cx_Freeze 将脚本捆绑到独立的可执行文件中。
  • @Blender 是对的——通常的方法是使用py2exe 或等效的,或者通过在自述文件中将lxml 列为依赖项来让用户处理它。 (不用说,后者对于主要针对 linux 用户的开源项目更为常见,前者用于针对 Windows 的商业或免费软件工具……而对于介于两者之间的项目,您可能必须同时做这两个。 )
  • 谢谢,很高兴看到有多种方法(几乎总是在编程方面)来处理我的问题。嗯,我尝试了 sys.path.append(),但肯定我使用了错误或不合格的路径。实际路径如何?

标签: python import module lxml elementtree


【解决方案1】:

virtualenv 中安装 LXML,然后在该环境中运行您的程序。这将无缝处理您的 PATH 问题。在不同的计算机上,您可以构建新的 virtualenvs 并安装依赖项。

【讨论】:

  • 对不起,但这并不能解决我的问题,从那时起我会强制我分发程序的每个用户安装虚拟环境。我只想部署一个可以运行的包含 program.py 的文件夹。
【解决方案2】:

lxml.etree 是编译后的扩展。将 lxml 源文件夹放入 sys.path 是不够的。 尝试从http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下载lxml-3.0.2.win-amd64-py3.3.‌exe,使用解压缩程序打开安装程序文件,例如WinRAR,并将当前lxml源目录替换为安装程序中的lxml文件夹。

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    相关资源
    最近更新 更多