Django 1.4开发环境与zc.buildout
我正试图使用以下指南为Django 1.4项目创建一个开发环境: virtualenv指南的一部分运行正常,输出如下: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. 之后,我可以激活开发环境
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上的最新版本。