【问题标题】:Can't install a Python package无法安装 Python 包
【发布时间】:2011-06-14 00:07:49
【问题描述】:

我对 CentOS 非常陌生,我正在尝试在其上安装 M2Crypto Python 包。

我跑了:

sudo python setup.py install

看起来一切正常:(这是输出的结尾)

removing 'build/bdist.linux-i686/egg' (and everything under it)
Processing M2Crypto-0.20.2-py2.4-linux-i686.egg
Removing /usr/lib/python2.4/site-packages/M2Crypto-0.20.2-py2.4-linux-i686.egg
Copying M2Crypto-0.20.2-py2.4-linux-i686.egg to /usr/lib/python2.4/site-packages
M2Crypto 0.20.2 is already the active version in easy-install.pth

Installed /usr/lib/python2.4/site-packages/M2Crypto-0.20.2-py2.4-linux-i686.egg
Processing dependencies for M2Crypto==0.20.2

但是我无法导入 M2Crypto:

$ python
Python 2.4.3 (#1, Nov 11 2010, 13:34:43) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import M2Crypto
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "M2Crypto/__init__.py", line 22, in ?
import __m2crypto
ImportError: No module named __m2crypto
>>> 

我做错了什么?

【问题讨论】:

  • 看来您并没有做错什么。我在 Ubuntu 上使用 apt 安装了该软件包,并且使用 Python 2.6 没有问题。 (你为什么使用 Python 的 v2.4?)该模块是从 /usr/lib/pymodules/python2.6/M2Crypto 加载的,其中有一个 __m2crypto.so 文件。我在 /usr/share/pyshared/M2Crypto 中找到了另一个 M2Crypto 副本,那里没有 .so 文件。
  • 感谢阿帕拉拉的反馈。我运行 Python 2.4 是因为这是 CentOS 的默认设置,而且很多 CentOS 工具都期望我读过的 Python 2.4。 M2Crypto 文档说它确实使用 2.4 运行。
  • 您始终可以安装较新版本的 python(默认安装到 /usr/local/bin/)并让您的脚本在该路径引用 Python。这样你就可以为你的系统 python 和你的开发/部署 python 拥有单独的模块目录。当你配置你的 python 源时,只需设置 --prefix=/usr/local/ (默认情况下它会这样做,但是......你可以随意制作......)

标签: python installation centos


【解决方案1】:

tests 不是有效目标,请改为运行 test;这为我解决了问题。

【讨论】:

    【解决方案2】:

    我刚刚在 centos 6.2 上遇到了同样的问题。

    运行测试也为我修复了它。但是,当我查看站点包时,没有任何改变。运行 setup.py test 在本地目录中构建 m2crpyto。

    这是问题的关键,要在不运行 setup.py 测试的情况下解决问题,请保留 M2Crypto 文件夹。它正在从本地文件夹中获取 m2crypto,但没有找到 egg。

    【讨论】:

      【解决方案3】:

      我跑了:

      python setup.py tests
      

      然后解决了它。它复制了一些文件,我认为这导致库被放置在正确的位置。

      running test
      running egg_info
      writing M2Crypto.egg-info/PKG-INFO
      writing top-level names to M2Crypto.egg-info/top_level.txt
      writing dependency_links to M2Crypto.egg-info/dependency_links.txt
      reading manifest file 'M2Crypto.egg-info/SOURCES.txt'
      writing manifest file 'M2Crypto.egg-info/SOURCES.txt'
      running build_ext
      copying build/lib.linux-i686-2.4/M2Crypto/__m2crypto.so -> M2Crypto
      test_BitSTring (tests.test_asn1.ASN1TestCase) ... ok
      .
      .
      .
      

      【讨论】:

      • +1!正如你所说,运行“setup.py test”也解决了 CentOS 上的安装问题!谢谢!
      【解决方案4】:

      我在安装 python 模块时偶尔会遇到这种情况。为了解决这个问题,我做了几件事:

      1. 有时是因为您从未设置过 PYTHONPATH。试试:

        setenv PYTHONPATH /usr/lib/python2.4/site-packages:$PYTHONPATH

      2. 有时是因为在 /usr/lib 中找到了共享库,您必须执行以下操作:

      setenv LD_LIBRARY_PATH /usr/lib:$LD_LIBRARY_PATH

      让我知道这对你有什么影响。大多数时候只是因为你没有正确设置python路径。

      【讨论】:

        猜你喜欢
        • 2021-01-23
        • 2018-09-19
        • 1970-01-01
        • 2021-05-04
        • 2019-07-18
        • 2021-03-31
        相关资源
        最近更新 更多