2013-05-01 17 views
3

環境:金字塔mongodb的支架未能關於Python 3由於粘貼

  • 的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 

我明白錯誤,表示粘貼不是python3兼容。我也知道如何解決它,但這基本上意味着將粘貼到python3(這是我不想做的事),所以任何人都可以告訴我可以做什麼?

從錯誤堆棧我看到webob/exc.pyfrom paste import httpexceptions但是當我檢查了代碼,我看到的是,進口是下一個tryexcept塊(不提高在except任何錯誤),所以我甚至嘗試了測試去除paste後從lib但後來當我運行測試,我看到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依賴性進入我的項目。

+0

很明顯嘛pyramid_mongodb不支持Python 3中。你最好的選擇是看腳手架,並使用它的一部分來達到你的目的,而不會陷入某些細節生成你應該修改的代碼。 – 2013-05-02 05:13:34

+1

我想我的失望是,我將pyramid_mongosbd腳手架與其他工作腳架並排比較,並確保它們看起來相似(只需要支持mongodb的必要更改),但仍粘貼導入(並因此得到執行),而我無法得到它發生的原因。但仍然感謝您對此進行調查和評論。 – 2013-05-02 06:01:16

+0

經過多一點調查,我認爲這是導入調用粘貼的WebError導入,這就是爲什麼失敗。 – 2013-05-02 06:11:21

回答

7

我並不打算回答我自己的問題,但由於我已經對我做出了改變,所以我想我會在這裏分享它(假設其他人希望python_mongodb腳手架在python3上工作)

發展變化。 INI

刪除

[pipeline:main] 
pipeline = 
    egg:WebError#evalerror 
    {{project}} 

改變

[app:{{project}}] to [app:main] 

新增(可選)

pyramid.includes = 
    pyramid_debugtoolbar 

更改服務器(從貼到女招待)

[server:main] 
use = egg:waitress#main 
host = 0.0.0.0 
port = 6543 

安裝程序中的更改。PY 改變需要從

requires = ['pyramid', 'WebError', 'pymongo'] 

刪除webError

應用程序現在的工作是很重要的......

+0

好的。你應該接受你的答案。我還會指出,weberror已經無法繼續使用,不會被移植到Python 3.您也可以使用debugtoolbar和pyramid_exclog的各種組合,或者推出自己的替代方案。 – 2013-05-02 23:28:21

+0

Thanx for answer。一切都很好,除了uwsgi包,所以我需要從需求列表中刪除它。 – Jaro 2014-04-30 12:56:25