2015-09-13 4 views
0

У меня есть проект пирамиды, который был прекрасен в другой системе. Я переместил проект в систему, где я использую anaconda-python. Кроме того, присутствуют все другие библиотеки и пакеты, которые требуются. Проект пирамиды не запускается со следующей ошибкой ..Ошибка при запуске проекта Pyramid в Pycharm

Traceback (most recent call last): 
    File "C:\Program Files (x86)\JetBrains\PyCharm 4.5.4\helpers\pycharm\pycharm_load_entry_point.py", line 8, in <module> 
    load_entry_point(dist, "console_scripts", name)() 
    File "C:\Users\abc\Anaconda\lib\site-packages\pyramid\scripts\pserve.py", line 58, in main 
    return command.run() 
    File "C:\Users\abc\Anaconda\lib\site-packages\pyramid\scripts\pserve.py", line 257, in run 
    vars = self.get_options() 
    File "C:\Users\abc\Anaconda\lib\site-packages\pyramid\scripts\pserve.py", line 197, in get_options 
    return parse_vars(restvars) 
    File "C:\Users\abc\Anaconda\lib\site-packages\pyramid\scripts\common.py", line 15, in parse_vars 
    % arg) 
ValueError: Variable assignment '\\Pyramid1\\development.ini' invalid (no "=") 

Process finished with exit code 1 

development.ini файл:

### 
# app configuration 
# http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/environment.html 
### 

[app:main] 
use = egg:Pyramid1 

pyramid.reload_templates = true 
pyramid.debug_authorization = false 
pyramid.debug_notfound = false 
pyramid.debug_routematch = false 
pyramid.default_locale_name = en 
pyramid.includes = 
    pyramid_debugtoolbar 
    pyramid_tm 
    pyramid_chameleon 
# mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname> 
sqlalchemy.url = mysql+mysqldb://root:@127.0.0.1:3306/db1 
sqlalchemy2.url = mysql+mysqldb://root:@127.0.0.1:3306/db2 
# By default, the toolbar only appears for clients from IP addresses 
# '127.0.0.1' and '::1'. 
# debugtoolbar.hosts = 127.0.0.1 ::1 

### 
# wsgi server configuration 
### 

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

### 
# logging configuration 
# http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/logging.html 
### 

[loggers] 
keys = root, sqlalchemy 

[handlers] 
keys = console 

[formatters] 
keys = generic 

[logger_root] 
level = INFO 
handlers = console 

[logger_pyramid1] 
level = DEBUG 
handlers = 
qualname = pyramid1 

[logger_sqlalchemy] 
level = INFO 
handlers = 
qualname = sqlalchemy.engine 
# "level = INFO" logs SQL queries. 
# "level = DEBUG" logs SQL queries and results. 
# "level = WARN" logs neither. (Recommended for production systems.) 

[handler_console] 
class = StreamHandler 
args = (sys.stderr,) 
level = NOTSET 
formatter = generic 

[formatter_generic] 
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s 

Я использую питон 27 в анаконде. и PyCharm 4.5.4

ответ

0

Вы pyramid.includes определенные дважды в одном разделе:

Try:

[app:main] 
use = egg:Pyramid1 

pyramid.reload_templates = true 
pyramid.debug_authorization = false 
pyramid.debug_notfound = false 
pyramid.debug_routematch = false 
pyramid.default_locale_name = en 
pyramid.includes = pyramid_debugtoolbar 
    pyramid_tm 
    pyramid_chameleon 
... 
+0

Я пробовал. Это не сработало. По-прежнему такая же ошибка. –

+0

Можете ли вы опубликовать обновленный файл development.ini. Ill проверить его локально –

+0

Я редактировал development.ini в вопросе с изменениями –

0

Способ диагностики таких проблем, чтобы открыть исходный файл, где ошибка поднял (C:\Users\abc\Anaconda\lib\site-packages\pyramid\scripts\common.py) и добавил некоторые записи. Согласно Pyramid git repo функция, о которой идет речь, составляет parse_vars. Делая какие-нибудь, как это обеспечит мгновенный понимание:

def parse_vars(args): 
    """ 
    Given variables like ``['a=b', 'c=d']`` turns it into ``{'a': 
    'b', 'c': 'd'}`` 
    """ 
    print("parse_vars called with:", args) 
    result = {} 
    for arg in args: 
     print("parsing:", arg) 
     if '=' not in arg: 
      print("Not happy with %s, going to raise an exception" % arg) 
      raise ValueError(
       'Variable assignment %r invalid (no "=")' 
       % arg) 
     name, value = arg.split('=', 1) 
     result[name] = value 
    return result 

Чудес языка сценариев, вы даже можете ткнуть в стандартные функции библиотеки языка Python :) Только не забудьте изменить его обратно, когда вы закончите.

Теперь, глядя на ваш след, становится очевидным, что функция получает неправильный ввод - вместо строки в формате 'a=b' она получает '\\Pyramid1\\development.ini'. Если вы посмотрите на pserve.py, вы увидите, что это больше связано с анализом аргументов командной строки, переданных скрипту - ваше приложение еще не загрузило ваш файл .ini.

Смежные вопросы