2012-04-25 46 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