python3在centos8服务器环境搭建&本地环境搭建

能力是一方面,境界是一方面。

总有一些人喜欢看不起人,说什么我跳槽了==没大厂背景了,好歹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 进行远程服务器代码的编写与调试

教你如何将自己的脚本代码放到服务器上运行

在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版本问题。。。

重新找了个参考资料

CentOS 8 上安装Python 3

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方狱兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值