gpt4 book ai didi

python - 如何在 Pyramid 项目中添加自定义包?

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:03 26 4
gpt4 key购买 nike

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

那么,我如何在 Pyramid 项目中添加自定义包并在调用 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

然后是消息:无效的命令名称“development.ini”

如果我删除“skimpygimpy”目录,然后重新运行

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

没关系。

development.ini文件: http://codepad.org/VKPXm0jf

我做错了什么?有什么想法吗?

最佳答案

这很奇怪,我现在主要是在画一个空白,但我有一个猜测。我认为因为您正在将 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 应该不会出现你的问题。

关于python - 如何在 Pyramid 项目中添加自定义包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19360311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com