当前位置: 首页 > 面试题库 >

如何在Linux上没有管理权限的情况下为python安装lxml?

经骁
2023-03-14
问题内容

我只需要一些主机上没有的软件包(我和linux …我们…我们并没有花费太多时间…)。

我曾经像这样安装它们:

# from the source
python setup.py install --user

要么

# with easy_install
easy_install prefix=~/.local package

但是它不适用于lxml。在构建过程中出现很多错误:

x:~/lxml-2.3$ python setup.py build
Building lxml version 2.3.
Building without Cython.
ERROR: /bin/sh: xslt-config: command not found

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
running build
running build_py
running build_ext
building 'lxml.etree' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.6 -c src/lxml/lxml.etree.c -o build/temp.linux-i686-2.6/src/lxml/lxml.etree.o -w
In file included from src/lxml/lxml.etree.c:227:
src/lxml/etree_defs.h:9:31: error: libxml/xmlversion.h: No such file or directory
src/lxml/etree_defs.h:11:4: error: #error the development package of libxml2 (header files etc.) is not installed correctly
src/lxml/etree_defs.h:13:32: error: libxslt/xsltconfig.h: No such file or directory
src/lxml/etree_defs.h:15:4: error: #error the development package of libxslt (header files etc.) is not installed correctly
src/lxml/lxml.etree.c:230:29: error: libxml/encoding.h: No such file or directory
src/lxml/lxml.etree.c:231:28: error: libxml/chvalid.h: No such file or directory
src/lxml/lxml.etree.c:232:25: error: libxml/hash.h: No such file or directory
...
src/lxml/lxml.etree.c:55179: error: Б─≤xmlNodeБ─≥ undeclared (first use in this function)
src/lxml/lxml.etree.c:55179: error: Б─≤__pyx_v_c_nodeБ─≥ undeclared (first use in this function)
src/lxml/lxml.etree.c:55184: error: Б─≤_node_to_node_functionБ─≥ undeclared (first use in this function)
src/lxml/lxml.etree.c:55184: error: expected Б─≤;Б─≥ before Б─≤__pyx_v_next_elementБ─≥
src/lxml/lxml.etree.c:55251: error: Б─≤struct __pyx_obj_4lxml_5etree__ReadOnlyProxyБ─≥ has no member named Б─≤_c_nodeБ─≥
...

http://lxml.de/installation.html表示它具有某些依赖性。但是如何在没有管理权限的情况下安装它们?


问题答案:

如果您没有管理员权限,并且不能说服管理员为您安装相关的软件包,则有两种选择:

选项1
-下载来源libxml2libxslt编译并您在安装它们$HOME的地方,然后构建Python-
LXML对这些副本。

这是一个非常复杂的示例,因为如果您缺少其他依赖项,则可能需要很长时间才能下载/编译。

选项2- 下载与服务器上使用的Linux相同发行版的二进制软件包,然后将内容提取到主目录下。

例如,如果您正在运行Ubuntu Lucid,则首先要找到您的操作系统正在使用的版本,然后下载缺少的软件包:

% uname -m
x86_64
% aptitude show libxml2 | grep Version
Version: 2.7.6.dfsg-1ubuntu1.1

接下来,直接从Ubuntu服务器下载您需要的软件包:

% mkdir root ; cd root
% wget http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxml2/libxml2_2.7.6.dfsg-1ubuntu1.1_amd64.deb
% wget http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxslt/libxslt1.1_1.1.26-6build1_amd64.deb
% wget http://us.archive.ubuntu.com/ubuntu/pool/main/l/lxml/python-lxml_2.2.4-1_amd64.deb

提取内容,合并lxml本机代码和纯python代码,并将共享库移到顶部,然后删除提取的内容:

% dpkg-deb -x libxml2_2.7.6.dfsg-1ubuntu1.1_amd64.deb .
% dpkg-deb -x libxslt1.1_1.1.26-6build1_amd64.deb .
% dpkg-deb -x python-lxml_2.2.4-1_amd64.deb .
% mv ./usr/lib/python2.6/dist-packages/lxml .
% mv ./usr/share/pyshared/lxml/* lxml
% mv ./usr/lib .
% rm *.deb
% rm -rf usr

最后,要使用这些文件,您需要设置LD_LIBRARY_PATH和PYTHONPATH环境变量以指向$HOME/root。将它们放在您的~/.bashrc(或同等的)中,以便它们是永久的:

% export LD_LIBRARY_PATH=$HOME/root/lib
% export PYTHONPATH=$HOME/root

您可以使用ldd(如果已安装)验证是否找到共享对象:

% ldd $HOME/root/lxml/etree.so | grep $HOME
libxslt.so.1 => /home/user/root/lib/libxslt.so.1 (0x00007ff9b1f0f000)
libexslt.so.0 => /home/user/root/lib/libexslt.so.0 (0x00007ff9b1cfa000)
libxml2.so.2 => /home/user/root/lib/libxml2.so.2 (0x00007ff9b19a9000)

然后就可以测试Python了:

% python
>>> from lxml import etree


 类似资料:
  • 问题内容: 我正在尝试在办公室笔记本电脑上安装JDK,但是它说我需要管理员权限。我只能在工作中使用自己的帐户。 没有管理员权限的情况下如何安装Java开发套件? 问题答案: 这是一种在没有管理员特权或没有管理员密码的情况下安装Java的解决方法。为此,您需要安装不需要管理员特权的cygwin。在utils中,确保您选择cabextract.exe进行安装。 启动Cygwin Bash外壳。 键入c

  • 问题内容: 我正在使用/ /在Mac OS X上进行一些研究计算。为了提高性能,我们从大学租了一个400节点的集群(使用Linux),以便可以并行完成任务。问题是我们不允许在集群上安装任何额外的软件包(否或任何安装工具),它们仅提供原始python本身。 然后如何在群集上运行脚本?有没有办法集成模块(我认为numpy和scipy也具有一些已编译的二进制文件),以便可以在不安装软件包的情况下进行解释

  • 我正在尝试安装一个没有依赖项的python模块。 我跑: 但是这个安装依赖项,任何想法怎么能做到这一点?

  • 问题内容: 我是Python的新手,正在尝试安装此模块:http : //www.catonmat.net/blog/python-library-for-google- search/ 目录中没有setup.py,但是有以下文件: 有人可以告诉我如何设置或使用此模块吗? 谢谢! 问题答案: 在系统上开始使用该代码的最简单方法是: 将文件放入计算机上的目录中, 将该目录的路径添加到您的PYTHON

  • 问题内容: 我在服务器中提取,配置并使用了make作为安装包。 但是,我无法使用 make install 。我得到错误 我运行文件夹 我仍然遇到相同的错误。 如何在没有sudo访问的情况下运行 make install ? 问题答案: 如何安装到主目录下的路径? 然后运行: 同样,如果您的脚本(例如CGI)需要您自己的Python用户版本,则必须明确告诉它们: 而不是使用默认的系统Python,

  • 问题内容: 我正在上一些大学课程,并且得到了“教学帐户”,这是我可以用来工作的学校帐户。我想在那台机器上运行需要大量计算的Numpy,matplotlib,scipy代码,但是由于我不是系统管理员,所以无法安装这些模块。 我该如何安装? 问题答案: 在大多数情况下,最好的解决方案是通过运行以下命令来依靠所谓的“用户站点”位置(有关详细信息,请参阅PEP): 以下是我原始答案提供的一种“更手动”的方