能力是一方面,境界是一方面。
总有一些人喜欢看不起人,说什么我跳槽了==没大厂背景了,好歹BAT正式员工高T级别我去了3次,而你一次都没去。做人不要太拽,想想你自己的级别,混半天才京东T5=百度T4。。。
感谢身边有技术有能力有境界的同事,这边没有互联网的pua,我过的很好,所以少来你那一套。。。让我不爽就拉黑,没理由。。。不要和女人讲道理。。。。。
我就是不会python,完全不懂,从0学习,看不上?谁生下来就会py?你没个学习期??你是级别比我高还是工资比我高?一天天的哪来的优越感?另外,阿里系用java。
框架:flask
欢迎来到 Flask 的世界 — Flask 中文文档 (2.0.2)
10. 1217
因为我的机器是新申请的开发机器,所以不支持vim
我们在安装完Centos后,它默认的是安装了VI编辑器,VIM是没有安装的,所以我们在使用vim test.txt时会提示: vim command not found 。。。 这就是说明我们的Linux环境没有安装vim编辑器,下面我们来说一下如何安装这个编辑器:
1. 查看一下你本机已经存在的包,确认一下你的VIM是否已经安装:
输入 rpm -qa|grep vim 这个命令,如何vim已经正确安装,则会显示上面三个包的名称
2. 如果缺少了其中某个,比如说: vim-enhanced这个包少了,执行:yum -y install vim-enhanced 命令,它会自动下载安装。
3. 如果上面三个包一个都没有显示,则直接输入命令:
yum -y install vim*
如果vi模式下出现中午乱码,则vi下执行
:set encoding=utf-8
发现服务器上的代码,中文注释都是乱码,本地是ok的。在vi模式下:set encoding=utf-8是可以的,但是vim模式下不可以。
于是照着下面的步骤操作
1、首先查看你的语言是什么?
[root@centos8 ~]$ echo $LANG
------结果-------------------
en_US.UTF-8
[root@centos8 ~]$ localectl status
------结果-------------------
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: us
2、当前系统为英文,所以需要安装中文包
3、查询中文包
[root@centos8 ~]$ yum search Chinese
4、安装中文包
[root@centos8 ~]$ dnf install langpacks-zh_CN
5、修改本地语文环境
[root@centos8 ~]$ vim /etc/locale.conf
LANG="zh_CN.UTF-8"
6、使之生效
[root@centos8 ~]$ source /etc/locale.conf
中文乱码问题解决。但是对我而言还是不行。。。。
想了想是不是我的开发服务器不支持中文??
于是我在服务器创建了新文件,输入中文,发现还真是不支持中文编码格式。。。。。
折腾了3个小时,发现原来是我的iterm2在centos8.3不支持中文的。。。。
如何发现的?找了一台同事的服务器,登录上去,同事在她服务器的文本中插入中文是OK的,我这里不行(都是root登录),于是我换了mac自带的终端登录我的开发服务器,发现中文是OK的。接下来就是解决代码报错的问题了。。。
报错的是
Traceback (most recent call last):
File "app.py", line 25, in <module>
flask_app, manager, celery_app = create_app()
File "/home/data/KnowledgePlatform/knowledge/__init__.py", line 100, in create_app
redis_cache.init_app(flask_app)
File "/usr/local/lib/python3.7/site-packages/flask_cache/__init__.py", line 156, in init_app
from .jinja2ext import CacheExtension, JINJA_CACHE_ATTR_NAME
File "/usr/local/lib/python3.7/site-packages/flask_cache/jinja2ext.py", line 33, in <module>
from flask.ext.cache import make_template_fragment_key
ModuleNotFoundError: No module named 'flask.ext'
修改代码vim /usr/local/lib/python3.7/site-packages/flask_cache/jinja2ext.py
#from flask.ext.cache import make_template_fragment_key
from flask_cache import make_template_fragment_key
修改/site-packages/flask_cache/jinja2ext.py
中from flask.ext.cache import make_template_fragment_key
为from flask_cache import make_template_fragment_key
再次启动服务
/home/data/KnowledgePlatform/knowledge
[root@localhost knowledge]# python3 app.py
起起来啦~~
然后在postman输入自己的开发服务器ip:port/接口,接口正常返回
开发环境端口8089
线上环境端口5000
9. 1216
本地代码推到远程服务器编写与调试
在PyCharm - Preferences | Build, Execution, Deployment - Deployment 配置服务器host username password
记得勾选save password 输入密码
首次配置完毕,选中整个代码文件夹(如果选中一个则只上传单个文件),点击Tools - Deployment - Upload to 服务器地址
勾选Automatic Upload(always)开启自动同步,以后不需要手动Upload了
在pycharm的底部File Transfer可以看到上传完成情况
如果服务器代码被删除了,本地右击代码目录,右击Synchronize代码。如果不行,则把代码窗口关闭,再次选中整个代码文件夹(如果选中一个则只上传单个文件),点击Tools - Deployment - Upload to 服务器地址
解决本地代码编码问题,需要修改以下3个地方
设置pycharm文件默认换行符onfiguring Line Separator
1. Preferences | Editor | Code Style的Line separator选择Unix and OS X(\n)
2. 选中项目根节点,File - Line Separator - LF Unix
3. 右击被修改的代码文件(蓝色),Local History - Show History 可以看到Changed line separators to LF
8. 1215
开发机器(centos8.3)-服务器环境搭建
[root@localhost KnowledgePlatform]# hostnamectl
Static hostname: localhost.localdomain
Icon name: computer-vm
Chassis: vm
Machine ID: xx
Boot ID: xx
Virtualization: kvm
Operating System: CentOS Linux 8
CPE OS Name: cpe:/o:centos:centos:8
Kernel: Linux 4.18.0-240.el8.x86_64
Architecture: x86-64
安装python3
# yum -y install python36
在服务器安装依赖库
[root@localhost KnowledgePlatform]# pwd
/home/data/KnowledgePlatform
[root@localhost KnowledgePlatform]# pip3 install -r ./requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
在后面添加镜像
运行程序:
[root@localhost KnowledgePlatform]# python3 knowledge/app.py
如安装依赖库过程中遇到报错,则分析Collecting的报错依赖,如
Collecting cryptography==3.4.7 (from -r ./requirements.txt (line 27))
执行[root@localhost KnowledgePlatform]# pip3 install cryptography 不要指定版本号,则默认安装最新的版本
Installation - pip documentation v21.3.1
安了半天发现在安装mysql的时候,报错pip版本问题。。。
重新找了个参考资料
1. 安装Python的编译过程:
第一步:安装必备的插件:
(1)首先升级:
yum install -y update
经过10-15分钟的等待,更新完毕
(2)再安装 gcc和make插件:
均约1分钟
yum install gcc gcc-c++
yum -y install gcc automake autoconf libtool make
yum groupinstall -y 'Development Tools'
yum install -y gcc openssl-devel bzip2-devel libffi-devel
# 2、安装Python 3.7.8所需的依赖否则安装后没有pip3包
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make
# 3、在官网下载所需版本,这里用的是3.7.8版本
如不支持wget 先安装 yum -y install wget
wget https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tar.xz
安装Python
# 1、解压
tar -xvf Python-3.7.8.tgz
#2、配置编译
cd Python-3.7.0
./configure --prefix=/usr/local/python3 # 配置编译的的路径(这里--prefix是指定编译安装的文件夹)
./configure --enable-optimizations # 执行该代码后,会编译安装到 /usr/local/bin/ 下,且不用添加软连接或环境变量
make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 添加软连接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
#3、将/usr/local/python3/bin加入PATH
[[email protected] testProj]# vim /etc/profile
#然后在文件末尾添加
export PATH=$PATH:/usr/local/python3/bin
[[email protected] testProj]# source /etc/profile # 修改完后,还需要让这个环境变量在配置信息中生效,执行命令
如遇
raise EnvironmentError("%s not found" % (mysql_config.path,))
OSError: mysql_config not found
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/6a/91/bdfe808fb5dc99a5f65833b370818161b77ef6d1e19b488e4c146ab615aa/mysqlclient-1.3.0.tar.gz#sha256=06eb5664e3738b283ea2262ee60ed83192e898f019cc7ff251f4d05a564ab3b7 (from https://pypi.org/simple/mysqlclient/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement mysqlclient (from versions: 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.3.8, 1.3.9, 1.3.10, 1.3.11rc1, 1.3.11, 1.3.12, 1.3.13, 1.3.14, 1.4.0rc1, 1.4.0rc2, 1.4.0rc3, 1.4.0, 1.4.1, 1.4.2, 1.4.2.post1, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.1.0rc1, 2.1.0)
ERROR: No matching distribution found for mysqlclient
解决办法:
yum install python3-devel mysql-devel # 红帽 / CentOS
然后可以通过pip安装mysqlclient:
$ pip install mysqlclient
7. 1214
#!/usr/bin/python3
import keyword
print(keyword.kwlist)
if True:
print("True")
else:
print("False")
str = '012345678'
print(str)
# 输出第一个到倒数第二个的所有字符 包含起始
print(str[0:-1])
print(str[0])
print(str[2:-5])
# 输出从第1个开始后的所有字符
print(str[1:])
# 输出从第二个开始到第五个且每隔一个的字符(步长为2)
print(str[1:5:2])
# 输出字符串两次
print(str * 2)
# 连接字符串
print(str + '你好')
print('---------------')
# 使用反斜杠(\)+n转义特殊字符
print('hello\nrunoob')
# 在字符串前面添加一个 r,表示原始字符串,不会发生转义
# 这里的 r 指 raw,即 raw string,会自动将反斜杠转义
print(r'hello\nrunoob')
input("\n\n按下 enter 键后退出。")
import sys;
x = 'runoob';
sys.stdout.write(x + '\n')
sys.stdout.write(" hi ")
if 1:
print("a")
elif 2:
print("b")
else:
print("c")
x = "a"
y = "b"
# 换行输出
print(x)
print(y)
print('命令行参数为:')
for i in sys.argv:
print(i)
print('\n python 路径为', sys.path)
from sys import argv, path
print('================python from import===================================')
print('path:', path) # 因为已经导入path成员,所以此处引用时不需要加sys.path
counter = 100 # 整型变量
miles = 1000.0 # 浮点型变量
name = "runoob" # 字符串
print(counter)
print(miles)
print(name)
# Python允许你同时为多个变量赋值。例如
a = b = c = 1
print('c为', c)
# 您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, 'c的value'
print(a)
print(b)
print(c)
'''
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
'''
a, b, c, d = 20, 5.5, True, 4 + 3j
print(type(a), type(b), type(c), type(d))
a = 1111
print(isinstance(a, int))
print('是否为子类', issubclass(bool, int))
print('是否为真', True == 1)
print('是否为真', False == 1)
6. 1213语法学习
数字(Number)类型
python中数字有四种类型:整数、布尔型、浮点数和复数。
- int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
- bool (布尔), 如 True。
- float (浮点数), 如 1.23、3E-2
- complex (复数), 如 1 + 2j、 1.1 + 2.2j
字符串(String)
- python中单引号和双引号使用完全相同。
- 使用三引号(''' 或 """)可以指定一个多行字符串。
- 转义符 \
- 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
- 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
- 字符串可以用 + 运算符连接在一起,用 * 运算符重复。
- Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
- Python中的字符串不能改变。
- Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
- 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
word = '字符串' sentence = "这是一个句子。" paragraph = """这是一个段落, 可以由多行组成"""
5. 总结:遇到安装哪个第三方库报错,则pip3 install packagename 安装最新的依赖包
4. 如遇
The conflict is caused by:
The user requested PyJWT==1.4.2
flask-jwt 0.3.2 depends on PyJWT<1.5.0 and >=1.4.0
flask-jwt-extended 3.18.1 depends on PyJWT>=1.6.4
则试着把flask-jwt-extended的版本降低,如1.4.2
然后出现如图,看起来是ok了
输入pip3 list
3. 如遇
ERROR: Cannot install -r /Users/qa/Desktop/2021/code/KnowledgePlatform/requirements.txt (line 50) and PyJWT==1.5.0 because these package versions have conflicting dependencies.
则执行
pip3 install PyJWT
不加版本号,默认为安装最新的版本
参考 User Guide - pip documentation v22.0.dev0
python -m pip install SomePackage # latest version
2. 把 requirements.txt (所有第三方库)放到代码目录,执行如下命令
➜ 3.9.2_2 git:(master) ✗ pip3 install -r /Users/qa/Desktop/2021/code/KnowledgePlatform/requirements.txt
如遇
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/6b/ba/4729d99e85a0a35bb46d55500570de05b4af10431cef174b6da9f58a0e50/mysqlclient-1.3.1.tar.gz#sha256=3549e8a61f10c8cd8eac6581d3f44d0594f535fb7b29e6090db3a0bc547b25ad (from https://pypi.org/simple/mysqlclient/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Using cached mysqlclient-1.3.0.tar.gz (76 kB)
Preparing metadata (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /Library/Developer/CommandLineTools/usr/bin/python3 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/sv/b8dxy8857sz525t9g10t_n8w0000gn/T/pip-install-u3uljrre/mysqlclient_f17ec96c55c94511bc1f66295311ea4c/setup.py'"'"'; __file__='"'"'/private/var/folders/sv/b8dxy8857sz525t9g10t_n8w0000gn/T/pip-install-u3uljrre/mysqlclient_f17ec96c55c94511bc1f66295311ea4c/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/sv/b8dxy8857sz525t9g10t_n8w0000gn/T/pip-pip-egg-info-95p3wdy4
cwd: /private/var/folders/sv/b8dxy8857sz525t9g10t_n8w0000gn/T/pip-install-u3uljrre/mysqlclient_f17ec96c55c94511bc1f66295311ea4c/
Complete output (10 lines):
/bin/sh: mysql_config: command not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/sv/b8dxy8857sz525t9g10t_n8w0000gn/T/pip-install-u3uljrre/mysqlclient_f17ec96c55c94511bc1f66295311ea4c/setup.py", line 17, in <module>
metadata, options = get_config()
File "/private/var/folders/sv/b8dxy8857sz525t9g10t_n8w0000gn/T/pip-install-u3uljrre/mysqlclient_f17ec96c55c94511bc1f66295311ea4c/setup_posix.py", line 47, in get_config
libs = mysql_config("libs_r")
File "/private/var/folders/sv/b8dxy8857sz525t9g10t_n8w0000gn/T/pip-install-u3uljrre/mysqlclient_f17ec96c55c94511bc1f66295311ea4c/setup_posix.py", line 29, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
OSError: mysql_config not found
WARNING: Discarding https://files.pythonhosted.org/packages/6a/91/bdfe808fb5dc99a5f65833b370818161b77ef6d1e19b488e4c146ab615aa/mysqlclient-1.3.0.tar.gz#sha256=06eb5664e3738b283ea2262ee60ed83192e898f019cc7ff251f4d05a564ab3b7 (from https://pypi.org/simple/mysqlclient/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement mysqlclient (from versions: 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.3.8, 1.3.9, 1.3.10, 1.3.11rc1, 1.3.11, 1.3.12, 1.3.13, 1.3.14, 1.4.0rc1, 1.4.0rc2, 1.4.0rc3, 1.4.0, 1.4.1, 1.4.2, 1.4.2.post1, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.1.0rc1, 2.1.0)
ERROR: No matching distribution found for mysqlclient
则搜索报错
raise OSError("{} not found".format(_mysql_config_path))
OSError: mysql_config not found
解决办法:
$pip install mysqlclient
Defaulting to user installation because normal site-packages is not writeable
Collecting mysqlclient
Using cached mysqlclient-2.1.0.tar.gz (87 kB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: mysqlclient
Building wheel for mysqlclient (setup.py) ... done
Created wheel for mysqlclient: filename=mysqlclient-2.1.0-cp38-cp38-macosx_10_14_6_x86_64.whl size=56063 sha256=b37f963794a308a9a4cd18ca13c7688aea0c9929db127a00c73f00311902099b
Stored in directory: /Users/qa/Library/Caches/pip/wheels/61/e7/42/9d56347e42d7ce19397c0ca050c6bef56640e18be7021ac189
Successfully built mysqlclient
Installing collected packages: mysqlclient
Successfully installed mysqlclient-2.1.0
1. 安装brew
其他的博客都不能安装成功,找了我之前的博客。。。
如果你的mac是10.14.6 以上,homebrew安装失败 可以试试用国内的源。2021.12.13亲测可用
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
经过漫长的等待,大约10分钟,如图成功了 输入brew -v 显示版本号
qa@lishandeMacBook-Pro-7:~/Desktop/2021/技术分享/py学习$brew -v
Homebrew 3.3.7-47-g3f0b412