CentOS7安装playwright终极指南

news/2025/2/12 21:00:19/

CentOS7安装playwright终极指南

系统环境为CentOS Linux release 7.9.2009 (Core) 最小安装,考虑到playwright的安装需要 python3.7+ ,本次直接选择安装python3.8。

升级libstdc++

cd /opt
yum -y install wgetwget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zipfind /usr -name "libstdc++.so.*"
cd /usr/lib64
ll libstdc++.so.6
mv libstdc++.so.6 libstdc++.so.6.bakcp /opt/libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64/
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6

升级glibc

下载并解压 glibc-2.28

cd /opt
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xzvf glibc-2.28.tar.gz
cd glibc-2.28
### 创建临时文件
mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin### 这一步时, 发生了错误, 提示大致为
*** These critical programs are missing or too old: compiler python
*** Check the INSTALL file for required versions.

升级 gcc 版本

yum -y install centos-release-scl
yum -y install devtoolset-8*rpm -ivh http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
yum -y install devtoolset-8-runtime
yum -y install devtoolset-8# 启用工具
scl enable devtoolset-8 bash# 安装GCC-8
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils bison# 直接替换旧的gcc
旧的gcc是运行的/usr/bin/gcc
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++gcc --version
g++ --version

升级 make

cd /opt
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz 
cd make-4.3/#安装到指定目录
./configure  --prefix=/usr/local/make
make
make install# 创建软链接
cd /usr/bin/
mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make

继续编译 glibc

# 进入之前的 `glibc-2.28/build`目录下
cd /opt/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/binmake
make install

查询libc版本

strings /lib64/libc.so.6 | grep GLIBC

设置(en_US.UTF-8)

vi /etc/environment
输入:
LANG=en_US.UTF-8
LC_ALL=
存盘,然后输入:source /etc/environment
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8

安装python 3.8

Centos 7操作系统上默认安装了python 2.7.5版本,但是python 2即将成为历史,python 3才是未来的主流,本文记录了笔者在Centos 7上安装python 3.8的过程

下载python 3.8压缩包

使用如下命令下载python 3.8:

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz

解压缩安装包

通过以下命令解压缩下载的文件:

cd /opt
tar zxvf Python-3.8.0.tgz

解压后进入Python-3.8.0目录:

cd /opt/Python-3.8.0

安装前准备工作

因为编译 Python 源代码需要依赖于很多工具,所以得先准备一下,依次执行以下命令:

yum update -yyum groupinstall -y 'Development Tools'yum install -y gcc openssl-devel bzip2-devel libffi-devel

安装python 3.8

现在我们就可以安装python 3.8了,首先执行以下命令(注意,一定要在Python-3.8.0目录下执行该命令):

cd /opt/Python-3.8.0
./configure --prefix=/usr/local/python3 --enable-optimizations

📝注意:

--prefix 选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在 /usr/local/bin ,库文件默认放在 /usr/local/lib ,
配置文件默认放在 /usr/local/etc ,其它的资源文件放在 /usr/local/share ,比较凌乱.

如果配置 --prefix ,如: ./configure --prefix=/usr/local/python3 可以把所有资源文件放在 /usr/local/python3 的路径中,不会杂乱.用了 --prefix 选项的另一个好处是卸载软件或移植软件.当某个安装的软件不再需要时> ,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个相同的操作系统机器即可.当然要卸载程序,也可以在原来的make 目录下用一次 make uninstall ,但前提是make文件指定过uninstall.

./configure 命令执行完毕之后创建一个文件 Makefile, 供下面的make命令使用,执行 make install 之后就会把程序安装到我们指定的文件夹中去.

make && make install

那么现在就安装好python 3了吗?很遗憾,答案是没有.因为系统默认使用的还是python 2.

修改 python 2 链接

我们首先查看一下 Python 可执行文件的位置:

which python

然后切换到相应的目录:

cd /usr/bin

查看相关的python信息:

ls -la python*

发现当我们执行 python 命令时,系统指向python 2,然后python 2指向python 2.7,所以系统默认使用的python版本仍然是python 2.

首先将python 改名为 python.bak

mv python python2.bak

再次查看python相关信息:

修改yum配置文件

进入目录 /usr/bin ,查看有关yum的文件:

ls -la yum*

使用 vi 进入文本编辑器(如果有多个yum配置文件,都要进去修改):

vi yum

点击i进入编辑模式之后将 #!/usr/bin/python 改为 #!/usr/bin/python2,按ESC退出编辑模式,输入 :wq! 保存修改退出.

同样进入文件 /usr/libexec/urlgrabber-ext-down 做同样修改.

配置python 3软链接

进入 /usr/bin 目录,配置软链接.在我看来,其实软链接就像Windows操作系统里的快捷方式,比如现在桌面上有一个图标叫python,现在你双击打开它,发现它打开的是Python 2,所以我们要配置其指向python 3.

ln -s /usr/local/python3/bin/python3.8 /usr/bin/pythonln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip

📝注意: 如果提示 /usr/bin/pip 已经存在,可以使用rm删除,然后再进行配置.

当然,也可以配置一个pip3软链接.

rm -f /usr/bin/pip3
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3

验证python版本

输入 python --versionpip -V,查看

yum安装依赖和中文字体

yum -y install libXcomposite libXtst gtk3 atk at-spi2-atk cups-libs libxkbcommon libXdamage libXrandr mesa-libgbm alsa-lib-develyum -y install fontconfig
yum -y install cjkuni-ukai-fonts cjkuni-uming-fonts

安装playwright

rm -rf ~/.cache/ms-playwright/pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m playwright install

测试脚本

# 导入
from playwright.sync_api import Playwright, sync_playwright# 创建浏览器
def run (playwright: Playwright) -> None:# 创建浏览器browser = playwright.chromium.launch(headless=True)# 使用 selenium 如果要打开多个网页,需要创建多个浏览器,但是 playwright 中只需要创建多个上下文即可# 例如:content1 = browser.new_context()、content2 = browser.new_context() 分别去访问网页做处理content = browser.new_context()# 每个 content 就是一个会话窗口,可以创建自己的页面,也就是浏览器上的 tab 栏,在每个会话窗口中,可以创建多个页面,也就是多个 tab 栏# 例如:page1 = content.new_page()、page2 = content.new_page() 封面去访问页面page = content.new_page()# 页面打开指定网址page.goto('https://www.baidu.com')print(page.title())page.screenshot(path="screenshot.png",full_page=True)# page.wait_for_timeout(1000)# 使用完成关闭上下文(也就是会话窗口)content.close()# 关闭浏览器browser.close()# 调用
with sync_playwright() as playwright:run(playwright)

存为 /opt/test_playwright.py
运行测试: python ./test_playwright.py


<<完毕>>


http://www.ppmy.cn/news/1186166.html

相关文章

人大与加拿大女王大学金融管理硕士项目:开启国际视野,成就金融领袖

生活中&#xff0c;我们总会遇到各种各样的困难和挑战。有时候&#xff0c;我们会感到沮丧、迷茫甚至绝望。但是&#xff0c;正是这些困难和挑战&#xff0c;让我们变得更加坚强、勇敢和成熟。在这个职场竞争愈发激烈的时代&#xff0c;不断地充实自己是非常重要的。如果你从事…

IPKISS 设计规则

如果想要使用 amf 中定义的层结构&#xff0c;那么需要导入 amf 包&#xff0c;虽然 amf 包可能不会被直接进行调用。导入的 amf 包永远需要被放在所有导入的第一行&#xff0c;否则运行时可能会报错。使用 ConnectBend 或者 ConnectManhattan 对器件结构进行连接时&#xff0c…

【tips】huggingface下载模型权重的方法

文章目录 方法1&#xff1a;直接在Huggingface上下载&#xff0c;但是要fanqiang&#xff0c;可以git clone或者在代码中&#xff1a; from huggingface_hub import snapshot_download # snapshot_download(repo_id"decapoda-research/llama-7b-hf") snapshot_downl…

【GEE】Google Earth Engine(GEE)注册详细教程无需教育邮箱

这个专栏真的是纠结了很久&#xff0c;不知道到底要不要分享自己在学习GEE的时候的一些经验和代码。因为本人在日常中使用Python和ENVI多点&#xff0c;虽然GEE也会用但不至于频繁使用&#xff0c;同时针对GEE其实官网给出了很多接口的使用方法&#xff0c;国内外也有很多人分享…

Unity多人同时在线海量玩家角色的架构与设计

前言 Unity多人同时在线的游戏会有很大的地图&#xff0c;大量的玩家同时在线,以及玩家会有不同的游戏职业&#xff0c;这样众多的玩家游戏角色我们客户端应该如何来设计呢&#xff1f;本文来分享以下几个点 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;希望大家…

Jetpack Compose | State状态管理及界面刷新

我们知道Jetpack Compose&#xff08;以下简称Compose&#xff09;中的 UI 可组合项是通过Composable 声明的函数来描述的&#xff0c;如&#xff1a; Composable fun Greeting() {Text(text "init",color Color.Red,modifier Modifier.fillMaxWidth()) }上面的代…

Transformer模型原理

NLP预训练模型的架构大致可以分为三类&#xff1a; 1. Encoder-Decoder架构&#xff08;T5&#xff09;&#xff0c;seq2seq模型&#xff0c;RNN、LSTM网络 2. BERT&#xff1a;自编码语言模型&#xff0c;预测文本随机掩码 3. GPT&#xff1a; 自回归语言模型&#xff0c;预测…

国产芯片vs“国际水平”,有距离也有超越!

当前&#xff0c;国产芯片正在迎来全新的发展阶段。国产终端芯片性能怎么样&#xff0c;与国际主流产品相比&#xff0c;表现如何&#xff1f;今天笔者就针对目前热度较高的四款国产CPU进行参数分析与性能跑分横向对比。 此次国产芯片评测型号分别是海光C86-3250、龙芯3A5000H…