【发布时间】:2013-04-25 03:13:47
【问题描述】:
环境:
- Python 3.2.3(使用 virtualenv)
- 金字塔 1.4
- pyramid_mongodb 脚手架
使用 pyramid_mongodb 脚手架安装 myproject 后,我运行了 python setup.py test -q,但失败并出现以下错误。
running build_ext
Traceback (most recent call last):
File "setup.py", line 33, in <module>
""",
File "/usr/lib/python3.2/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.2/distutils/dist.py", line 917, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.2/distutils/dist.py", line 936, in run_command
cmd_obj.run()
File "/root/App/Big3/lib/python3.2/site-packages/distribute-0.6.24-py3.2.egg/setuptools /command/test.py", line 137, in run
self.with_project_on_sys_path(self.run_tests)
File "/root/App/Big3/lib/python3.2/site-packages/distribute-0.6.24-py3.2.egg/setuptools /command/test.py", line 117, in with_project_on_sys_path
func()
File "/root/App/Big3/lib/python3.2/site-packages/distribute-0.6.24-py3.2.egg/setuptools /command/test.py", line 146, in run_tests
testLoader = loader_class()
File "/usr/lib/python3.2/unittest/main.py", line 123, in __init__
self.parseArgs(argv)
File "/usr/lib/python3.2/unittest/main.py", line 191, in parseArgs
self.createTests()
File "/usr/lib/python3.2/unittest/main.py", line 198, in createTests
self.module)
File "/usr/lib/python3.2/unittest/loader.py", line 132, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python3.2/unittest/loader.py", line 132, in <listcomp>
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python3.2/unittest/loader.py", line 91, in loadTestsFromName
module = __import__('.'.join(parts_copy))
File "/root/App/Big3/Lime/lime/__init__.py", line 1, in <module>
from pyramid.config import Configurator
File "/root/App/Big3/lib/python3.2/site-packages/pyramid-1.4.1-py3.2.egg/pyramid/config /__init__.py", line 10, in <module>
from webob.exc import WSGIHTTPException as WebobWSGIHTTPException
File "/root/App/Big3/lib/python3.2/site-packages/WebOb-1.2.3-py3.2.egg/webob/exc.py", line 1115, in <module>
from paste import httpexceptions
File "/root/App/Big3/lib/python3.2/site-packages/Paste-1.7.5.1-py3.2.egg/paste /httpexceptions.py", line 634
except HTTPException, exc:
^
SyntaxError: invalid syntax
我理解这个错误,Paste 不兼容 python3。我也知道如何解决它,但这基本上意味着将 Paste 移植到 python3(这是我不想做的事情),所以谁能告诉我能做什么?
从错误堆栈中,我看到webob/exc.py 正在执行from paste import httpexceptions,但是当我检查代码时,我发现导入位于try except 块下(没有在except 中引发任何错误),所以我什至在从lib 中删除paste 之后尝试了测试,但是当我运行测试时,我看到 setup.py 再次安装paste
running test
Checking .pth file support in .
/root/App/Big3/bin/python -E -c pass
Searching for Paste>=1.7.1
我检查了 .pth 文件并删除了对 paste 的引用,然后开始重新安装项目,但不知何故它仍然根据需要看到 paste
Installed /root/App/Big3/Myproject
Processing dependencies for Myproject==0.0
Searching for Paste>=1.7.1
Reading http://pypi.python.org/simple/Paste/
我的 setup.py 文件与this 相同
谁能告诉我这个 paste 依赖项在哪里进入我的项目。
【问题讨论】:
-
很明显,pyramid_mongodb 不支持 Python 3。最好的办法是查看脚手架并使用其中的一部分来满足您的目的,而不会陷入生成代码的私密细节中'无论如何都应该修改。
-
我想我的挫败感是我将 pyramid_mongosbd 脚手架与其他工作的脚手架并排比较,并确保它们看起来很相似(只有支持 mongodb 的必要更改)但仍然导入粘贴(并且因此被执行),我无法理解它发生的原因。但仍然感谢您对此进行调查并发表评论。
-
经过更多调查后,我认为是 WebError 导入反过来调用 paste,这就是失败的原因。
标签: pyramid