2012-04-25 107 views
3

我试图创建使用下面的指南Django的1.4项目开发环境:引导的Django 1.4开发环境,有zc.buildout

http://www.stereoplex.com/blog/a-django-development-environment-with-zc-buildout

的virtualenv部分运行正常与以下输出:

virtualenv project 
New python executable in project\Scripts\python.exe 
Installing setuptools................done. 
Installing pip...................done.      

之后,我可以激活开发环境。现在,我创建了一个名为来源目录,下载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通过引导建立以下和运行BIN \扩建:

[buildout] 
parts = django 

[django] 
recipe = djangorecipe 
version = 1.4 

运行BIN \扩建我碰到下面的错误后:

(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 

虽然如果我直接在项目环境中运行python我可以导入通过pkg_resources没有错误:

(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'> 

我我完全被击中了。有什么建议么?

回答

5

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

  • 为什么的virtualenv? Buildout本身提供隔离,所以不需要virtualenv。你能重新尝试一下bootstrap.py和buildout.cfg吗?那么只需要用你的系统python运行bootstrap.py?

  • 您是否在全局安装了buildout,或许?他们可能会干涉。

  • 在某些情况下,最新的1.5.2 buildout有一些与site.py文件有关的问题,这是它在virtualenv中失败的可能原因。你可以试试http://pypi.python.org/pypi/zc.buildout/1.5.2#system-python-and-zc-buildout-1-5中提到的特殊1.4.4引导程序吗?

  • bin/buildout -vvv给你更多的调试信息。

一个额外的评论:在djangorecipe的version设置在djangorecipe的最新版本已经过时了。你可以删除它。如果你想固定Django,你必须将它固定在你构建的[version]列表中。

+0

非常感谢你让我的一天! Bootstrap v1.5.2是个问题。需要Virtualenv来隔离构建包,以便团队可以在不同的分支/项目修改中工作。但是,也许我错了 - 无论如何,我仍然在学习,并将成为我整个人生。 – Ruslan 2012-04-25 13:59:38

+0

Virtualenv不应该提供更多的隔离,比你已经获得的构建。至少,我很确定。 Buildout不会在全球安装任何东西。我一直用它来做不同的分支和项目,所有这些都有自己的扩展。但是...一个额外的virtualenv层不会伤害:-) – 2012-04-25 18:51:00

+0

buildout正在全局安装setuptools,所以需要virtualenv! – holms 2013-09-04 03:14:38

3

您所遵循的指南已经过时了一点。在处理[django]部件时,特别是在version变量中,它会失败。您必须以新方式指定版本,这在djangorecipe page中显示。这是:

[buildout] 
parts = django 
versions = versions 

[versions] 
django = 1.4 
+1

在某些时候,buildout似乎不再尊重这个django版本,只是下载了最新版本(刚刚为我1.5)。把它变成“Django = 1.4”似乎已经修复了它。 – 2013-03-01 22:26:57

+0

根据这个提交,案件应该不重要https://github.com/rvanlaar/djangorecipe/commit/64762ddbb56a4beaf061a615d49adbdaf018cd9a – 2013-03-11 22:08:18

+0

这个提交比1.5版本的djangorecipe更新,这是PyPI上最新的一个,因为我写这个。 – gldnspud 2013-04-25 18:52:20