2013-10-14 56 views
2

我创建了一个金字塔项目(使用pcreate -s starter projtest)并使用默认结构,pserve按预期运行项目。 但是,当我在views.pytemplates目录的同一级别添加软件包目录(例如,称为“skimpygimpy”)时,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

这听起来像你只是调用pserve不当,但我不知道,因为你没有显示它。 –

+0

嗨@MichaelMerickel!当我删除“skimpygimpy”目录时,pserve启动该项目。但是,当我重新添加此目录时,pserve显示错误。只是它。 允许金字塔脚手架中的自定义目录吗?在development.ini或setup.py中有必要配置任何配置行吗? –

+0

你正在执行的确切的pserve命令行是什么,以及你从哪个文件夹路径执行它? –

回答

1

这是一个奇怪的,我现在主要是画空白,但我有一个猜测。我认为,因为你是克隆skimpygimpy的整个源代码树作为你的项目中的一个子包,skimpygimpy setup.py被无意中执行的东西,如config.scan(),它从子包中导入所有的代码。当setup.py被导入时,会发生不好的事情,因为它会使用sys.args来获取参数,这可以解释为什么它的行为如同你所称的python setup.py development.ini

依赖应该让他们都安装到同一个virtualenv中可以发现,当这样做是因为解释程序的路径总是包含在virtualenv中的东西在文件系统中的实际位置是几乎没有相关性。

因此,第三方项目不应该放在你的软件包中,而应该安装在virtualenv中,所以我认为你应该避免将skimpygimpy作为一个子软件包。这意味着将其克隆到顶级projtest文件夹(如果您喜欢),但不在projtest包内。

我很确定你的问题不会发生在任何手动创建的软件包中,不包括setup.py。例如mkdir foo; touch foo/__init__.py不应该表现出您的问题。