2013-10-14 3 views
2

Я создал проект пирамиды (с pcreate -s starter projtest) и со структурой по умолчанию, pserve запускает проект, как ожидалось. Но, когда я добавляю каталог пакетов (например, называемый «skimpygimpy») на том же уровне views.py и templates директория, pserve не может запустить проект (ошибка invalid command name 'development.ini').Как добавить пользовательский пакет в проект пирамиды?

projtest/ 
|-- CHANGES.txt 
|-- development.ini 
|-- MANIFEST.in 
|-- myproject 
| |-- __init__.py 
| |-- skimpygimpy 
| | |-- __init__.py 
| | |-- file.py 
| | |-- ... 
| |-- static 
| | |-- favicon.ico 
| | |-- logo.png 
| | |-- pylons.css 
| |-- templates 
| | |-- mytemplate.pt 
| |-- tests.py 
| |-- views.py 
|-- production.ini 
|-- README.txt 
|-- setup.cfg 
|-- setup.py 

Итак, как же я мог добавить пользовательский пакет внутри проекта пирамиды и избежать этой ошибки (неправильное имя команды «development.ini»), когда я называю pserve?

Больше информации о проблеме:

Я сделал эти команды:

mkdir pyramid 
cd pyramid/ 
virtualenv --no-site-packages env 
cd env/ 
bin/easy_install pyramid 
bin/pcreate -s starter projtest 
cd projtest 
cd projtest 
hg clone https://code.google.com/p/skimpygimpy/ 
cd skimpygimpy 
touch __init__.py 
cd .. 
cd .. 
../bin/python setup.py develop 
../bin/pserve development.ini 

И, затем, сообщение: invalid command name 'development.ini'

Если я удалить "skimpygimpy" каталог и повтор

../bin/python setup.py develop 
../bin/pserve development.ini 

Все нормально.

development.ini Файл: http://codepad.org/VKPXm0jf

Что я делаю неправильно? Есть идеи?

+1

Звучит так, будто вы просто вызываете псих неправильно, но я не знаю, потому что вы его не показывали. –

+0

Привет @MichaelMerickel! Когда я удаляю каталог «skimpygimpy», pserve запускает проект. Однако, когда я повторно добавляю этот каталог, pserve показывает ошибку. Просто это. Разрешен ли пользовательский каталог в пирамидном эшафоте? Нужна ли какая-либо конфигурация внутри development.ini или setup.py? –

+0

Какова конкретная командная строка pserve, которую вы выполняете, и с какого пути вы выполняете ее? –

ответ

1

Это странно, я в основном рисую пустоту прямо сейчас, но у меня есть предположение. I думаю, что, поскольку вы клонируете все исходное дерево skimpygimpy в качестве подпакета в своем проекте, skimpygimpy setup.py выполняется непреднамеренно чем-то вроде config.scan(), который импортирует весь код из подпакетов. Когда setup.py будет импортирован, произойдут плохие вещи, потому что он будет использовать sys.args для захвата параметров, что объясняет, почему он действует так, как вы называли python setup.py development.ini.

Зависимости следует искать, установив их все в одном виртуальном пространстве, их фактическое местоположение в файловой системе не так важно, когда это будет сделано, потому что путь интерпретатора всегда включает в себя вещи в virtualenv.

В результате сторонние проекты не должны размещаться внутри вашего пакета, а скорее устанавливаться в virtualenv, поэтому я думаю, вам следует избегать размещения skimpygimpy в качестве подпакета вообще. Это означает, что вы клонируете его в папку projtest верхнего уровня, если хотите, но не внутри пакета projtest.

Я уверен, что ваша проблема не возникнет с созданием вручную пакетов, в которые не входит setup.py. Например, mkdir foo; touch foo/__init__.py не должен проявлять вашу проблему.

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