Django 1.4开发环境与zc.buildout

Django 1.4开发环境与zc.buildout,django,buildout,Django,Buildout,我正试图使用以下指南为Django 1.4项目创建一个开发环境: virtualenv指南的一部分运行正常,输出如下: virtualenv project New python executable in project\Scripts\python.exe Installing setuptools................done. Installing pip...................done. 之后,我可以激活开发环境

我正试图使用以下指南为Django 1.4项目创建一个开发环境:

virtualenv指南的一部分运行正常,输出如下:

virtualenv project
New python executable in project\Scripts\python.exe
Installing setuptools................done.
Installing pip...................done.                       
之后,我可以激活开发环境。现在,我创建名为Source的目录,将bootstrap.py下载到其中,并创建一个buildout.cfg,其中包含以下内容:

[buildout]
parts =
并运行bootstrap.py以获得以下结果:

Creating directory 'C:\\Dropbox\\XYZ\\project\\Source\\bin'.            
Creating directory 'C:\\Dropbox\\XYZ\\project\\Source\\parts'.          
Creating directory 'C:\\Dropbox\\XYZ\\project\\Source\\eggs'.           
Creating directory 'C:\\Dropbox\\XYZ\\project\\Source\\develop-eggs'.   
Generated script 'C:\\Dropbox\\XYZ\\project\\Source\\bin\\buildout'. 
下面是问题部分-安装Django我将buildout.cfg配置为以下内容,并运行由bootstrap创建的bin\buildout:

[buildout]
parts = django

[django]
recipe = djangorecipe
version = 1.4
运行bin\buildout后,我出现以下错误:

(project) C:\Dropbox\XYZ\project\Source>bin\buildout.exe                      
Traceback (most recent call last):           

File "C:\Dropbox\XYZ\project\Source\bin\buildout-script.py", line 15, in <module>                                                                               import site # imports custom buildout-generated site.py                       

File "C:\Dropbox\XYZ\project\Source\parts\buildout\site.py", line 601, in <module>                                                                              main()                                                                        

File "C:\Dropbox\XYZ\project\Source\parts\buildout\site.py", line 584, in main                                                                                  known_paths = addsitepackages(known_paths)                                    

File "C:\Dropbox\XYZ\project\Source\parts\buildout\site.py", line 328, in addsitepackages                                                                       import pkg_resources                                                        

ImportError: No module named pkg_resources
(项目)C:\Dropbox\XYZ\project\Source>bin\buildout.exe
回溯(最近一次呼叫最后一次):
文件“C:\Dropbox\XYZ\project\Source\bin\buildout script.py”,第15行,在导入站点#导入自定义生成的buildout site.py
main()中第601行的文件“C:\Dropbox\XYZ\project\Source\parts\buildout\site.py”
文件“C:\Dropbox\XYZ\project\Source\parts\buildout\site.py”,第584行,位于主已知路径=addsitepackages(已知路径)中
文件“C:\Dropbox\XYZ\project\Source\parts\buildout\site.py”,第328行,位于addsitepackages import pkg\U资源中
ImportError:没有名为pkg_资源的模块
虽然如果我在项目环境中直接运行python,我可以导入pkg_资源而不会出错:

(project) C:\Dropbox\XYZ\project\Source>python                                
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32                                                                              Type "help", "copyright", "credits" or "license" for more information.          
>>> import pkg_resources                                                        
>>> pkg_resources                                                               
<module 'pkg_resources' from 'C:\Dropbox\XYZ\project\lib\site-packages\setuptools-0.6c11-py2.7.egg\pkg_resources.py'>  
(项目)C:\Dropbox\XYZ\project\Source>python
win32上的Python 2.7.3(默认值,2012年4月10日,23:24:47)[MSC v.1500 64位(AMD64)]键入“帮助”、“版权”、“信用证”或“许可证”以了解更多信息。
>>>导入pkg_资源
>>>北大资源

我在这里完全被打动了。有什么建议吗?

我没有确切的答案,但这里有一些头脑风暴的想法:

  • 为什么是虚拟人?Buildout本身提供隔离,因此不需要virtualenv。你能用bootstrap.py和buildout.cfg再试一次吗?那么就用系统python运行bootstrap.py

  • 您是否在全球范围内安装了buildout?他们可以干涉

  • 最新的1.5.2版本在某些情况下与site.py文件存在一些问题,这可能是它在virtualenv中失败的原因。您能试试中提到的特殊1.4.4引导程序吗

  • bin/buildout-vvv
    为您提供了更多的调试信息


另一条评论:djangorecipe的最新版本不推荐使用djangorecipe中的
版本
设置。您可以删除它。如果要锁定Django,必须将其锁定在构建的
[version]
列表中。

下面的指南有点过时。当处理
[django]
部分时,它将失败,特别是在
版本
变量中。必须以新的方式指定版本,如中所示。这是:

[buildout]
parts = django
versions = versions

[versions]
django = 1.4

非常感谢你让我开心!引导v1.5.2就是问题所在。Virtualenv需要隔离构建包,以便团队可以处理项目的不同分支/修改。但也许我做错了什么——不管怎样,我仍在学习,并将成为我的一生。Virtualenv不应该提供比buildout更多的隔离。至少,我很确定这一点。Buildout不会全局安装任何东西。我一直在为不同的分支和项目使用它,它们都有自己的构建。但是一个额外的virtualenv层不会有什么坏处:-)buildout正在全局安装setuptools,因此需要virtualenv!在某种程度上,buildout似乎不再尊重这个django版本,而是下载了最新的版本(我刚刚下载了1.5)。将它大写为“Django=1.4”似乎已经解决了这个问题。根据这个提交,大小写应该不重要,因为提交比djangorecipe的1.5版本更新,这是我写这篇文章时PyPI上的最新版本。