`
zzhanglii
  • 浏览: 3161 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
最近访客 更多访客>>
社区版块
存档分类
最新评论

【转载】Python学习笔记

阅读更多

1.安装python

我安装的是python2.5
到http://www.python.org/download/下载python,我用的是win2下的python2.5.1
是.exe的安装,下一步下一步就可以了。
安装之后把 $\python25\加到环境变量中去,方便命令行执行python命令;把
$\python25\Scripts加到环境变量中去,方便Scripts中脚本命令。


2.安装pythonIDE
   共介绍三种
2.1 eclipse + pydev
   eclipse(http://www.eclipse.org/) +   
   pydev(http://pydev.sourceforge.net/download.html)
  
2.2 pythonwin (http://sourceforge.net/projects/pywin32/ )

2.3 UliPad

 

3.Django及web项目

3.1 安装django(http://www.djangoproject.com)
   第一种安装方法:
    cd到django目录下,执行python setup.py install
    cd python25\Lib\site-packages\
    把Lib\site-packages\django\bin\目录下的django-admin拷贝到 python25\Scripts\
   第二中安装方法:
    拷贝django\build\lib 下的django整个文件夹到 python25\Lib\site-packages\
    拷贝django\build\scripts-2.5\ 下的django-admin文件到 python25\Scripts\
   
   检查django是否安装成功:
   进入shell,执行import django,成功执行则安装成功。
  
  
3.2 创建web项目(使用django自带的服务器)
   E:\mysite>django-admin.py startproject testsite

   生成了一个testsite目录,包含__init__.py, manage.py, settings.py, urls.py
   __init__.py 说明mysite是一个python module
   manage.py 管理应用程序
   settings.py 配置应用程序
   urls.py URL映射

   E:\mysite>python manage.py runserver

   查看http://localhost:8000/页面
   显示It worked!则成功
   默认使用端口是8000,修改默认使用端口为8080: python manage.py runserver 8080
  
  
3.3 创建web项目(Apache + mod_python)
   3.3.1 安装Apache
    下载地址 : http://archive.apache.org/dist/httpd/binaries/win32/
    apache_2.2.6-win32-x86-no_ssl.msi安装,下一步,下一步……

   3.2 安装mod_python
    下载地址 :http://www.modpython.org/
    mod_python-3.3.1.win32-py2.5-Apache2.2.exe 安装时要注意,要选择Apache的安装目录
  
   3.3 部署web项目
  
    修改Apache/conf/httpd.conf:
     注意:在修改做备份,以防万一修改错误!
     设置MaxRequestsPerChild 1,这样可以在开发阶段不用重启Apache进行测试,但是运行比较慢
     添加LoadModule python_module modules/mod_python.so
     去掉注释Include conf/extra/httpd-vhosts.conf

    修改Apache/conf/extra/httpd-vhosts.conf:
     注意:用的例子是前面3.2中的web项目。

     <VirtualHost 127.0.0.1:80>
       <Location "/">
         SetHandler python-program
         PythonHandler django.core.handlers.modpython       
         PythonPath "['E:/mysite'] + sys.path"
         SetEnv DJANGO_SETTINGS_MODULE testsite.settings
         PythonAutoReload Off
         PythonDebug On
       </Location>
     </VirtualHost>
   


     在E:\mysite\testsite下新建hellodjango.py(=之间为文件内容):
     ============================================

     from django.http import HttpResponse

     def index(request):
       return HttpResponse("Hello, Django.")
     ============================================

     修改urls.py:
     ===========================================================
     from django.conf.urls.defaults import *

     urlpatterns = patterns('',
       # Example:
       # (r'^testsite/', include('testsite.foo.urls')),
       (r'^$', 'testsite.hellodjango.index'),


       # Uncomment this for admin:
       # (r'^admin/', include('django.contrib.admin.urls')),
     )

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


     启动Apache,访问http://localhost


Django学习文档
http://www.woodpecker.org.cn/obp/django/django-stepbystep/newtest/doc/
http://www.djangoproject.com/docu****tion


4.数据库安装
4.1 PostgreSQL
   PostgreSQL: http://www.postgresql.org/
   psycopg: http://initd.org/tracker/psycopg
  
4.2 MySQL
   MySQL: http://www.mysql.com/
   MySQLdb: http://sourceforge.net/projects/mysql-python
  
4.3 SQLite
   SQLite: http://www.sqlite.org/
   pysqlite: http://initd.org/tracker/pysqlite

 

 

 

django配置一篇实例

[常见错误现象1]
关键词:      client denied by server configuration。

表象:          访问了http://localhost:80/mysite/ 后,假如发现图片没有加载,或者css没有应用上,并且httpd.conf文件中Location的配置绝对路径肯定没错。

 

解释:         

第一,   首先检查httpd.conf配置Alias的配置,

看看Alias设置的路径是否正确,

Alias /site_media c:/django/myproject/media

请保证您附加的这个路径肯定是你的图片或者css存放的路径。

其次,请检查您的django项目myproject目录下的settings.py,保证MEDIA_ROOT、STATIC_PATH、TEMPLATE_DIRS这三个参数指向的绝对路径正确无误。

最后,如果上面的参数都没错,却还是不行。那么请您检查Apache的日志文件

Apache2.2\logs\error.log

如果您发现有这样的错误提示:

错误日志

[Mon Nov 20 17:27:08 2006] [notice] Child 4172: Starting thread to listen on port 80.

[Mon Nov 20 17:27:08 2006] [error] [client 127.0.0.1] client denied by server configuration: c:/Django/myproject/media/css/global.css, referer: http://localhost:80/mysite/

那么说明是因为对这些资源文件的访问被拒绝了。

此时,请您浏览 http://localhost:80/site_media/css/global.css ,如果遇到了HTTP 403错误,就说明是权限问题。

此时,请到httpd.conf,增加如下配置来允许静态资源文件夹被访问:

增加的配置行

# 对需要访问的区域,可以增加正确的Directory块

# 否则会得到这样的错误:client denied by server configuration: c:/Django/myproject/media/css/global.css, referer: http:/ /localhost:80/mysite/

<Directory "c:/Django/myproject/media/">

Order Deny,Allow

Allow from all

</Directory>

重启Apache服务。

 

[常见错误现象2]
关键词:      EnvironmentError: Could not import settings。

表象:          访问了http://localhost:80/mysite/ 后,直接页面报告如下错误:

页面错误输出

1.     Mod_python error: “PythonHandler django.core.handlers.modpython”

Traceback (most recent call last):

File “C:\Python24\Lib\site-packages\mod_python\apache.py”, line 299, in HandlerDispatch
result = object(req)

File “c:\django_src\django\core\handlers\modpython.py”, line 163, in handler
return ModPythonHandler()(req)

File “c:\django_src\django\core\handlers\modpython.py”, line 125, in __call__
if settings.ENABLE_PSYCO:

File “c:\django_src\django\conf\__init__.py”, line 27, in __getattr__
self._import_settings()

File “c:\django_src\django\conf\__init__.py”, line 54, in _import_settings
self._target = Settings(settings_module)

File “c:\django_src\django\conf\__init__.py”, line 82, in __init__
raise EnvironmentError, “Could not import settings ‘%s’ (Is it on sys.path? Does it have syntax errors?): %s” % (self.SETTINGS_MODULE, e)

EnvironmentError: Could not import settings ‘myproject.settings’ (Is it on sys.path? Does it have syntax errors?): No module named myproject.settings


这是开始配置django+apache最容易遇到的问题,:D。

 

解释:

这是因为apache在系统目录下找不到myproject/settings.py文件。

首先检查PythonPath设置的路径是否正确:

PythonPath "sys.path+['c:/django']"

注意,这个'c:/django'路径实际是我们的项目路径c:/django/myproject的上一级目录!不要写错了。

增加的配置行

# mysite目录路径: c:/django/myproject,

# 但是对于PythonPath,必须设置成这个目录的上一级目录!

# this site url:http://localhost:80/mysite/

<Location "/mysite/">

    SetHandler python-program

    PythonPath "sys.path+['c:/django']"

    PythonHandler django.core.handlers.modpython   

    SetEnv DJANGO_SETTINGS_MODULE myproject.settings

    PythonInterpreter mysite

    PythonDebug On

</Location>

 

配置Django到Apache的步骤:
如何在Windows环境下安装Apache和mod_Python, 这篇Blog解释得很明白,我下面的这些步骤得到了验证。

1:
从 http://httpd.apache.org/
来获取apache_2.2.3-win32-x86-no_ssl.msi这个安装文件;
运行这个msi即可顺利安装Apache。
2:

网络上有很多说可以利用Apache和mod_python源代码来编译安装mod_python的,但是如果你仅仅想快速安装,那么请从

http://www.apache.org/dist/httpd/modpython/win/3.2.10/

直接下载

mod_python-3.2.10.win32-py2.4-apache2.2.exe

文件,运行这个exe即可顺利把mod_python安装到Python2.4以及Apache2.2;

由于GFW的封锁,可能您无法访问apache网站,那么可以从这里下载:

http://www.cnblogs.com/Files/zhengyun_ustc/mod_python-3.2.10.win32-py2.4-apache2.2.rar

3:

我们用

Python django-admin.py startproject myproject

命令,在C盘的django目录下创建了一个Django项目myproject。我们把它引用的图片文件和css文件等静态资源都放在myproject文件夹下的media目录中。

此时,将myproject目录下的settings.py文件中的这三个参数修改一下,主要是为了从相对路径变成绝对路径:

修改的配置行

# Django settings for myproject project.

'''

将相对路径改为绝对路径。主要有:

MEDIA_ROOT

TEMPLATE_DIRS

STATIC_PATH

'''

# Absolute path to the directory that holds media.

# Example: "/home/media/media.lawrence.com/"

MEDIA_ROOT = 'c:/django/myproject'

STATIC_PATH = 'c:/django/myproject/media'

TEMPLATE_DIRS = (

    # Put strings here, like "/home/html/django_templates".

    # Always use forward slashes, even on Windows.

    'c:/django/myproject/templates',

)

切记切记,一定要保证这三个参数是绝对路径。

4:

配置Apache的httpd.conf配置文件:

首先,在“Dynamic Shared Object (DSO) Support”的配置下增加一行

LoadModule python_module modules/mod_python.so

这个必须手动添加。

5:

我们列出此时Apache所需要的参数分别为:

项目名:myporject

试图访问的URL为:http://localhost:80/mysite/

静态资源文件的存放目录:c:/django/myproject/media

项目文件夹路径:c:/django/myproject

好了,此时你就应该在httpd.conf文件的最后附加这段配置,以便让Apache知道到哪里去定位myproject/settings.py文件:

增加的配置行

# mysite目录路径: c:/django/myproject,

# 但是对于PythonPath,必须设置成这个目录的上一级目录!

# this site url:http://localhost:80/mysite/

<Location "/mysite/">

    SetHandler python-program

    PythonPath "sys.path+['c:/django']"

    PythonHandler django.core.handlers.modpython   

    SetEnv DJANGO_SETTINGS_MODULE myproject.settings

    PythonInterpreter mysite

    PythonDebug On

</Location>

对于上面的配置,Limodou注释道:“上面 PythonPath 主要是将 myproject的目录加入到 sys.path ,以便 Django 可以找到。需要使用绝对路径。

SetEvn 中设置的 DJANGO_SETTINGS_MODULE 就对应于你的 项目名.配置文件。因此为了能导入 项目名.配置文件,就需要前面的 PythonPath 的设置。

PythonDebug 和 PythonAutoReload 建议在生产时设为 Off 。”

为了让图片、css、script能够被Apache成功加载,还需要在httpd.conf最后附加这段配置:

增加的配置行

#Alias /site_media 是用来将 myproject的静态文件设置一个 URL 访问的别名。

Alias /site_media c:/django/myproject/media

<Location "/site_media/">

       SetHandler None

</Location>

 

#Alias /media 是将 Django Admin 的静态文件设置一个 URL 的访问别名。

Alias /media c:/Django-0.95/django/contrib/admin/media

<Location "/media/">

       SetHandler None

</Location>

 

# file types we want to serve statically

# case insensative match

<LocationMatch "(?i)\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">

       SetHandler None

</LocationMatch>

 

Limodou在Step by step中特地说“同时可以注意到 settings 我改为了 settings_apache 了。一方面将要把其中的内容有关相对路径的东西改为绝对路径,另一方面我还想保持现在的 settings.py 。”这也是一个很好的做法。

最后,修改MaxRequestsPerChild为1,这是一个可选项。Limodou是这么说的“同时如果你不想每次重启Apache 来进行测试,可以将: MaxRequestsPerChild 0. 改为: MaxRequestsPerChild 1”

 

重启Apache服务。

6:

浏览 http://localhost:80/mysite/ 即可。

分享到:
评论
1 楼 grok 2011-08-31  
楼主很用心写哦,顶

相关推荐

Global site tag (gtag.js) - Google Analytics