1

我是一个完全的python新手。我在 32 位 windows 7 专业版上安装了 python 3.3.1。我正在尝试安装 RapidSMS,它应该像“pip install rapidsms”一样简单,它确实启动了该过程,但它没有完成,我留下了以下错误消息。

我一直在尝试用谷歌搜索它,但我无法找到这个特定的问题,对于这个错误,我为自己编写代码的人找到了修复程序,而且我还没有看到有人提到这个关于 rapidsms 本身的问题. 由于它在 Django 表中停止,我想知道我是否以某种方式搞砸了该安装,或者 python 版本兼容性是否存在问题。我在安装其他一些软件时使用过 pip,所以我认为这不是问题。

因此,如果有人在安装 pyhton 软件包时遇到此错误,或者真的知道原因可能是什么,我将不胜感激!(我还计划在获得批准后将其发布到 RapidSMS 邮件列表中,但想看看这是否是一个更普遍的问题,可能会得到解决。)

Downloading/unpacking django-tables2==0.13.0 (from rapidsms)
 Running setup.py egg_info for package django-tables2
Traceback (most recent call last):
  File "<string>", line 16, in <module>
  File "c:\users\mhealth1\appdata\local\temp\pip-build-mhealth1\django-tables2\setup.py", line 7, in <module>
    version = re.search('__version__ = "(.+?)"', f.read()).group(1)
  File "C:\Python33\lib\re.py", line 161, in search
    return _compile(pattern, flags).search(string)
TypeError: can't use a string pattern on a bytes-like object
    Complete output from command python setup.py egg_info: 
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "c:\users\mhealth1\appdata\local\temp\pip-build-mhealth1\django-tables2\setup.py", line 7, in <module>

    version = re.search('__version__ = "(.+?)"', f.read()).group(1)

  File "C:\Python33\lib\re.py", line 161, in search

    return _compile(pattern, flags).search(string)

TypeError: can't use a string pattern on a bytes-like object

----------------------------------------
Command python setup.py egg_info failed with error code 1 in c:\users\mhealth1\a
ppdata\local\temp\pip-build-mhealth1\django-tables2
Storing complete log in C:\Users\mhealth1\pip\pip.log
4

1 回答 1

2

由于追溯中 setup.py 第 7 行的以下代码,Django-tables2 无法在 Python3 中安装:

version = re.search('__version__ = "(.+?)"', f.read()).group(1)

如果搜索模式是字节对象,这应该可以工作。可以通过简单地在字符串文字前面加上 ab 来创建字节文字,如下所示:

version = re.search(b'__version__ = "(.+?)"', f.read()).group(1)

这就是 Python 抛出 TypeError 并显示消息“不能在类似字节的对象上使用字符串模式”的原因。文件内容以字节形式读取。

我认为 RapidSMS 目前还不支持 Python3,基于它的测试环境列表。这可以在此处看到的项目的 tox 环境列表中看到,其中仅列出了 Python 2.6 和 2.7:https ://github.com/rapidsms/rapidsms/blob/develop/tox.ini#L2

为了解决眼前的问题,您需要在具有 Python 2.6 或 2.7 的虚拟环境中安装 RapidSMS。RapidSMS 的文档在此处简要描述了虚拟环境设置:http ://www.rapidsms.org/en/develop/topics/virtualenv.html

您需要在系统上安装 Python 2.6 或 2.7,并使用 -p 或 --python 参数指定 virtualenv 使用哪个 Python。以下内容取自上面链接的 RapidSMS 文档,但修改为使用 Python 2.7 指定:

mkvirtualenv --distribute --no-site-packages rapidsms --python=python2.7
于 2013-06-21T02:02:11.257 回答