如何在金字塔项目中添加自定义包?

时间:2013-10-14 12:30:58

标签: python pyramid

我创建了一个金字塔项目(使用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

那么,当我调用pserve时,如何在金字塔项目中添加自定义包并避免此错误(命令名称'development.ini'无效)?

有关此问题的更多信息:

我做了这些命令:

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 :(得分:1)

这是一个奇怪的,我现在大部分都在画一个空白,但我有一个猜测。我认为因为你将clickmpygimpy的整个源代码树克隆为你项目中的一个子包,所以很快就会出现像config.scan()这样导入所有代码的问题。分包。当导入setup.py时,会发生不好的事情,因为它会使用sys.args来获取参数,这可以解释为什么它的行为就像你调用python setup.py development.ini一样。

依赖性应该通过将它们全部安装到相同的virtualenv中来找到,它们在文件系统上的实际位置在完成时几乎不相关,因为解释器的路径总是包含virtualenv中的内容。

因此,第三方项目不应该放在你的包中,而是安装到virtualenv中,所以我认为你应该避免将slipmpygimpy作为一个子包放置。这意味着如果你愿意,可以将它克隆到顶级projtest文件夹中,但不要在projtest包中。

我很确定任何手动创建的包不包含setup.py都不会出现问题。例如,mkdir foo; touch foo/__init__.py不应出现您的问题。