一般我们的开发环境都是使用virtualenv构建的,那么要在设备上构建python3.6的virtualenv环境怎么搞?毕竟2.6的virtualenv不能构建3.6的虚拟环境出来。
so easy !!
先看下python3.6的安装
https://www.jianshu.com/p/11a876346bb9
安装好后执行如下操作
#安装virtualenv虚拟化环境
[root@xxx01 ~]# /usr/local/python36/bin/pip3 install virtualenv
#创建一个新的python3.6的虚机环境使用
[root@xxx01 ~]# cd /data/
[root@xxx01 data]# /usr/local/python36/bin/virtualenv ./python36env #创建
[root@xxx01 data]#. python36env/bin/activate #进入到虚拟环境,注意前面那个点,替换为source也ok,这块不理解可以查下. 与 source代表什么
#安装一个django环境(注意,操作是在虚拟环境中进行的)
(python36env) [root@xxx01 data]# pip install "django>=1.11,<2.0" #这里想按照1.*的最新版本,但又不想安装2.0的版本,所以这样写
然后可以创建django的程序喽
(python36env) [root@xxx01 data]# django-admin startproject ops
(python36env) [root@xxx01 data]# ls
ops python36env
可以看到我们建立了一个ops的项目,现在我们去启动下去
(python36env) [root@xxx01 data]# cd ops/
(python36env) [root@xxx01 ops]# vim ops/settings.py
28 ALLOWED_HOSTS = ['*'] #修改第28行这个允许访问的列表为所有
(python36env) [xxx01 ops]# python manage.py runserver 0.0.0.0:8000
Performing system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 26, 2018 - 10:51:34
Django version 1.11.13, using settings 'ops.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
测试访问
诺,这样就可以访问到我们刚刚搭建的python项目了
不过不知道大家有没有发现一段提示:
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
这里是说,我们当前有13个数据库的修改未提交,小伙伴们一定很懵逼,我又没配置数据库,为嘛数据库会有修改未提交呢?
这里我们一起去看下django的配置文件
在配置文件的76-81行左右有如下一段配置
(python36env) [xxx01 ops]# vim ops/settings.py
76 DATABASES = {
77 'default': {
78 'ENGINE': 'django.db.backends.sqlite3',
79 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
80 }
81 }
这块是调用了sqlite3做了基于文件的数据库,我们可以看到79行,数据库文件存储在了BASE_DIR下名称为db.sqlite3,大概找了一下,就在django的/路径下
(python36env) [root@xxx01 ops]# ls
db.sqlite3 manage.py ops
那么怎么把这段信息干掉呢?或者说将数据库的改变更新到数据库中呢?
(python36env) [root@xxx01 ops]# python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK
一条命令搞定,就是将代码中对于数据库的映射关系更新到数据库中。
然后我们在重新启动下我们的django程序
(python36env) [root@xxx01 ops]# python manage.py runserver 0.0.0.0:8000
Performing system checks...
System check identified no issues (0 silenced).
May 26, 2018 - 11:02:18
Django version 1.11.13, using settings 'ops.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
诺,现在没有报错喽
好吧 这篇就酱汁吧
网友评论