在ubuntu16.4开发, 系统迁移到红旗linux上,遇到了一些情况。
问题一: 红旗linux上,找不到pip
明明安装过了python3, python3自带pip,输入pip为什么找不到?
原因:没有做link。
pip -V
参考:https://www.cnblogs.com/belic/p/python3_install.html
分析: 安装源码程序编译时,
./configure prefix=/usr/local/python3
make & makefile
目的是把可执行程序放在特定的目录。如果不指定prefix,可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share
解决:
#ln -s /usr/local/python3/bin/python3 /usr/bin/python3
#ln -s /usr/local/python36/bin/pip3 /usr/bin/pip
#pip install -U pip
验证:
#whereis pip3 , 则会显示来自于 /usr/bin/python3
其实,安装完python3后,应该把旧版本的python也一起替换掉。参考:https://blog.csdn.net/lukabruce/article/details/82186534
问题二:安装完pip后,安装visualenv的问题
在pip install virtualenv后直接用 “virtualenv my_new_env” 来创建虚拟环境(my_new_env为虚拟环境的目录名)会提醒command not found
这是因为/usr/bin/中还没有创建软连接。
方法1:去原来的安装路径目录下执行,但太麻烦: /usr/local/python3/bin/virtualenv env
如果不知道路径的可以通过 “find / -name virtualenv” 查找
方法2:创建链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
然后任意目录下都可以执行了。
virtualenv new_env
问题二: pip install xxx 特别慢,下载东西的速度只有 10k/秒 左右
生成requirements.txt
文件在开发环境ubuntu上:
(1)pip freeze > requirements.txt
(2)拷贝到红旗linux环境
(3)pip install -r requirements.txt 特别特别慢
解决:更换pip源泉,我换的清华源
阿里云 https://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
1.临时安装替换: pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple
2.永久替换:修改 ~/.pip/pip.conf (没有就创建一个), 内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
windows:
直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
参考https://blog.csdn.net/chenghuikai/article/details/55258957
问题三 django can't find new sqlite version? (SQLite 3.8.3 or later is required (found 3.7.17))
启动django时候报上述错误 :python3 manage.py runserver
sqlite版本太老,下载安装新版本,并修改配置链接。
参考:https://qiita.com/rururu_kenken/items/8202b30b50e3bfa75821
下载,解压
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz $ tar xvfz sqlite-autoconf-3280000.tar.gz
$ cd sqlite-autoconf-3280000
安装,路径为/usr/local
$ ./configure --prefix=/usr/local
$ make $ sudo make install
$ sudo find /usr/ -name sqlite3 【find 路径 -name 要找的内容】
上述指令,找到一大堆结果
/usr/bin/sqlite3 #老版本sqlite /usr/lib64/python2.7/sqlite3 #目录 /usr/lib64/python3.7/sqlite3 #目录 /usr/local/bin/sqlite3 #刚刚安装编译的新版本sqlite
删除垃圾
$ rm sqlite-autoconf-3280000.tar.gz $ rm -rf ./sqlite-autoconf-3280000
确认版本
$ /usr/local/bin/sqlite3 --version
3.28.0 2019-04-16
$ /usr/bin/sqlite3 --version
3.7.17 2013-05-20
切换版本
$ sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old $ sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
# 因为sqlite3会依赖并使用第三方库,所有要设置共享库 # vi ~/.bashrcし,追加下面一行,
$ export LD_LIBRARY_PATH="/usr/local/lib"
使配置文件生效:
# source ~/.bashrc
共享库知识参考: https://www.cnblogs.com/wainiwann/p/4210343.html
#用python确认sqlite版本
#python
>>> import sqlite3 >>> sqlite3.sqlite_version '3.28.0' >>> exit()
可以启动django了
python3 manage.py runserver
最后,启动django服务或batch
(1)virtualenv 下, 启动 #source activate
(2)出现 (venv)目录标记
在这个标记下,切换目录,到django工程目录,也就是manage.py所在的目录
启动web: python manage.py runserver 0.0.0.0:8000
启动batch: python manage.py xxxxx(batch file)