root() takes exactly 3 arguments (2 given)等小问题的解决
终于用上了有界面的debian,不过还是...不顺手,我想安装一个Google浏览器都出错了,自己搞了半天搞不定。 %>_<%
然后就是在使用admin的时候出现了很多小问题,有的是因为用的django新版本看的教材是老版本造成的。。。然后看到这篇文章,似乎有不少小问题都可以解决。
--------------------------------------------------------------------------------------------------------------------------------------------------------
来源:http://hi.baidu.com/koflance/blog/item/d6abed276feb2b0a4d088d79.html
为了方便python入门的同学,我把我的配置和经验写下,因为python一来现在热门,二来不同软件件兼容性实在是还有很大问题,所以写下这些东西,对需要配置的同学而言是非常有用的。
我用的配置版本如下:
名称:eclipse7.0
名称: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 “help”, “copyright”, “credits” 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 “help”, “copyright”, “credits” 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编码的。
MYSQLDB的user guide,参见这里;
MYSQLDB的API文档,参见这里;
=================================================================================
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参数的话,不会自动重新编译settings和urls文件,不加的话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…不了解介个变来变去的干啥,优化了莫~