root() takes exactly 3 arguments (2 given)等小问题的解决

终于用上了有界面的debian,不过还是...不顺手,我想安装一个Google浏览器都出错了,自己搞了半天搞不定。 %>_<%

然后就是在使用admin的时候出现了很多小问题,有的是因为用的django新版本看的教材是老版本造成的。。。然后看到这篇文章,似乎有不少小问题都可以解决。

--------------------------------------------------------------------------------------------------------------------------------------------------------

来源:http://hi.baidu.com/koflance/blog/item/d6abed276feb2b0a4d088d79.html

为了方便python入门的同学,我把我的配置和经验写下,因为python一来现在热门,二来不同软件件兼容性实在是还有很大问题,所以写下这些东西,对需要配置的同学而言是非常有用的。

我用的配置版本如下:

名称:eclipse7.0

下载地址:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-jee-galileo-SR1-win32.zip

名称:pydev1.5.4

下载地址:http://pydev.org/download.html#download-current-release-last-version-tag

名称:Django-1.1.1.tar.gz

下载地址:http://www.djangoproject.com/download/

名称:python-2.6.4rc2.msi

下载地址:http://www.python.org/ftp/python/2.6.4/python-2.6.4.msi

名称:MySQL-python-1.2.2.win32-py2.6.exe

下载地址:http://home.netimperia.com/files/misc/MySQL-python-1.2.2.win32-py2.6.exe

名称:python-dateutil-1.4.1

下载地址:http://pypi.python.org/pypi/python-dateutil/1.4.1

名称:PIL-1.1.7.win32-py2.6.exe

下载地址:http://effbot.org/media/downloads/PIL-1.1.7.win32-py2.6.exe

名称:setuptools-0.6c11.win32-py2.6.exe

下载地址:http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11.win32-py2.6.exe

 

 

 

python程序包安装指导地址:http://wiki.python.org/moin/CheeseShopTutorial

 

 

 

注意:MySQL-python没有兼容python2.7及其更高版本,同样django也没有一个版本适用于python3.0及其以上版本。对于python2.5而言,可以不用修改直接用python-mysql-1.2.2,只需要将里面的文件全部拷入C:\Python26\Lib\site-packages文件夹内。Django1.1.1不适用与python2.5,如果装上的话会报错。Django1.1.1可以装在python2.6及其以上版本。

 

     有些程序需要用到setuptools工具,setuptools 是一组 Python 的 distutils 工具的增强工具(适用于 Python 2.3.5 以上的版本,64 位平台则适用于 Python 2.4 以上的版本),可以让程序员更方便的创建和发布 Python 包,特别是那些对其它包具有依赖性的状况。所以首先需要安装setuptools,如果不能用以上的windows版本安装,或者不是windows系统,可以用python安装,只需要下载ez_setup.py运行,程序会自动下载合适与本地python的包文件并安装。ez_setup.py下载地址:http://pypi.python.org/packages/any/s/setuptools/setuptools-0.6c11-1.src.rpm

 

    以tar.gz 结尾的压缩包,请用7z解压缩工具(个人认为比winrar好用多了,还是免费的)。

=================================================================================

 

eclipse是一个非常优秀的编程IDE,但是十分庞杂,几乎什么类型的语言都支持,我用的是eclipse7.0,安装过程很傻瓜,此处不说。

=================================================================================

pydev是一个eclipse的插件,用于eclipse上开发python项目。结合网上安装方法,共计有两种:

第一种:

    下载后解压,将plugins目录下所有文件挪到Eclipse的相应目录下,将feature目录下所有文件挪到Eclipse的相应目录下,最后启动Eclipse,在Help-》Software Upates-》Manage Configuration,然后弹出的界面即可看到pydev的插件。

 

第二种:

   Help-》Software Upates-》add a site used to access the available software-》然后填写,url填http://pydev.sf.net/updates/-》然后照着提示下载安装即可。不过要等一些时候。

官网上的url:

Mirrors:
         Nightly builds:

 

=================================================================================

django安装前需要安装python和setuptools,按照前面注意事项安装setuptools,然后在命令行窗口中输入:

                                              python setup.py install

django安装是否成功的测试也简单,进入python编辑环境,

输入:import django

然后输入:django.VERSION

如果能够正确显示版本号,则说明成功。

=================================================================================

      在windows下安装python十分简单,我的建议是配置下环境变量,方法是:右键“我的电脑”---》属性---》高级----》环境变量---》选择系统变量中的path,并添加;C:\Python26;C:\Python26\Scripts   注意前面的分号是需要的。

=================================================================================

 

mysqldb的安装是最有问题的,如果选用python2.5,并用MySQL-python-1.2.2.win32-py2.5.exe安装,那么测试的时候不会出现任何问题,但是如果选用python2.5,用非windows安装方式,使用的是python setup.py install就会报错。

我选用的是MySQL-python-1.2.2.win32-py2.6.exe和python2.6

python测试输入:import MySQLdb,会报出:error: Unable to find vcvarsall.bat错误,后来找的是网上的解决方法,网址不记得了,我就把内容贴下吧。

这几天开始使用python连接mysql,发现这方面python做得不是很好,安装的过程比较麻烦。开始时尝试使用tar.gz包安装,但是发现安装过程会报error: Unable to find vcvarsall.bat的错误,查阅了大量的资料,有的说是需要安装VS,有的说也可以安装mingw,两个都试过,均没有成功,罢了,最后还是下了个MySQL-python-1.2.2.win32-py2.6.exe直接安装。

1.ImportError: DLL load failed: 找不到指定的模块。
—————————————————————————————————-
D:\Program Files\Python2.6>python
Python 2.6.1 (r261:67517, Dec   4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)] on win32
Type helpcopyrightcredits” or license” for more information.
>>> import MySQLdb
Traceback (most recent call last):
   File <stdin>, line 1, in <module>
   File D:\Program Files\Python2.6\Lib\site-packages\MySQLdb\__init__.py, line 19, in <module>

     import _mysql
ImportError: DLL load failed: 找不到指定的模块。
—————————————————————————————————-
解决方法:下载libmmd.dll(附件)libguide40.dll(附件)两个dll文件并复制到python安装目录的Lib\site-packages下。
参见:http://sourceforge.net/forum/message.php?msg_id=5613887

2.ImportError: DLL load failed: 找不到指定的模块。
—————————————————————————————————-
D:\Program Files\Python2.6>python
Python 2.6 (r26:66721, Oct   2 2008, 11:35:03) [MSC v.1500 32 bit (Intel)] on win32
Type helpcopyrightcredits” or license” for more information.
>>> import MySQLdb
D:\Program Files\Python2.6\lib\site-packages\MySQLdb\__init__.py:34: DeprecationWarning: the sets module is deprecated
   from sets import ImmutableSet
—————————————————————————————————-
解决方法:
1) file __init__, replace: 

from sets import ImmutableSet  
class DBAPISet(ImmutableSet):  

with  

class DBAPISet(frozenset) 

2) file converters.py, remove: 

from sets import BaseSet, Set 

3) file converters.py, change Set” by set” (IMPORTANT: only two places): 

line 48: return set([ i for i in s.split(',') if i ]) 
line 128: set: Set2Str,

 

注:当第三个不做更改的时候,会出现如下错误:

F:\pywork\testFirst>manage.py dbshell
C:\Python26\lib\site-packages\MySQLdb\converters.py:37: DeprecationWarning: th
sets module is deprecated
from sets import BaseSet, Set
'mysql' 不是内部或外部命令,也不是可运行的程序

做了第三步骤,还是有错:
F:\pywork\testFirst>manage.py dbshell
'mysql' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
或批处理文件。
参见:http://sourceforge.net/forum/message.php?msg_id=5808948

附件:
libguide40.dll.zip(77.3 KB)
libmmd.dll.zip(169 KB)
libmySQL.dll.zip(861 KB)

 

 

 

=================================================================================

python连接数据库的代码,也是装贴的:

连接mysql的代码:

# -*- coding: utf-8 -*-

import sys
import MySQLdb

reload(sys)
sys.setdefaultencoding('utf-8')

def getdata ():
     try:
         conn = MySQLdb.connect(host='localhost', user='root', passwd='mysql', db='test', port=3306, charset='utf8')
     except Exception, e:
         print '数据库连接配置错误!'
         print e
         return

     try:
         cur = conn.cursor()
         sql = r'select * from person'
         cur.execute(sql)
         allPerson = cur.fetchall()
     except Exception, e:
         print '数据库操作错误!'
         print e
         return

     for rec in allPerson:
         print rec[0],rec[1]
   
     cur.close()
     conn.close()

if __name__ == '__main__':
     getdata()

代码很明了,没什么好说明的。其中:

reload(sys)
sys.setdefaultencoding('utf-8')

以及数据库连接时的charset设置,是用来解决中文问题的。当然mysql也是utf8编码的。

MYSQLDBuser guide,参见这里

MYSQLDBAPI文档,参见这里

 

=================================================================================

 

pydev在eclipse的配置如下:

   Pydev的配置在Eclipse IDE下,打开Window->Preferences... 对话框,从右侧的树形列表中选择“PyDev”->“Interpreter Python”,点击New按钮,从Python的安装路径下选择Python.exe,然后会弹出一个对话框让你勾选System PYTHONPATH,我是都选了,应该无所谓。最后点Ok,退出。


进行Django项目开发

1、建立PyDev Project

   Eclipse IDE-》File-》New-》Other-》Pydev-》选择Pydev Project-》起一个项目的名称(例如demo)-》选择路径,如E:\work-》选择适合你的Python版本-》将下面的勾去掉,不要建立src文件-》Finish

2、建立Django Project

(1)django-admin.py startproject demo。

(2)把生成的Django项目目录拷贝到Eclipse刚刚建立的项目下的目录里。回到刚才的Elicpse IDE-》在PyDev Package视图中右键单击新建的项目,从弹出的菜单中选择“Refresh”,即可看到Django的项目工程。添加、删除文件和目录的操作都可以通过右键菜单来完成。

(3)右键单击PyDev项目-》属性-》选择PyDev-》PYTHONPATH-》然后将src目录(项目文件路径)添加到项目代码中去-》确定

 

原帖的第四步骤和我的eclipse有些不一样,我的如下:

(4)右击项目名称,选择run--》选择run configurations--》填写name和选择project和main module,记住main module选择manage.py,如下:

         Project:新建项目;

         Main Module${workspace_loc:项目名称/manage.py}

         Arguments中,program arguments里填runserver(加入--noreload参数的话,不会自动重新编译settingsurls文件,不加的话debug不能...);

    Iterpreter选择自己的python编译器。

 

原帖第四部分“

(4)对Pydev项目进行配置:选择Pydev的项目名称-》Run菜单-》Open Run Dialog-》Python Run-》右键New-》在Main面板中写入项目名称,通过Browse载入项目名称和Main Module,Main Module选择manage.py-》在Augement面板中,argument必须是runserver --noreload,下面的workingdirectory加入你的base directory。

=================================================================================

manage.py常用命令:

django-admin.py startproject mysite:新建项目。

manage.py runserver IP port:启动django自带服务器。

manage.py shell:启动django后台shell

manage.py startapp appname:建立一个app

manage.py validate:校验模型是否正确。

manage.py sqlall appname:生成create table语句。

manage.py syncdb:为模型生成相应表。

&在看The Django Book那个中文版,一些小问题:

admin页面连接,按照(r'^admin/', include('django.contrib.admin.urls'))的话,报错:

No module named urls

     还有可能是这个错误:

root() takes exactly 3 arguments (2 given)

     目前的格式(1, 0, 'final'),应该是:(r'^admin/(.*)',admin.site.root),原来的urls那个包不在了,而且提交时把admin后面的字符串也当做参数提交出去。

models .CharField内参数名是max_length

Newforms消失了,还是使用django.forms…不了解介个变来变去的干啥,优化了莫~

posted @ 2010-06-11 16:03  Phenix.  阅读(5223)  评论(0编辑  收藏  举报