部署一个Python爬虫环境(二)-ubuntu版_探索篇
一,部署环境及安装包
1.python3.7
2.Python 包安装和管理工具pip
3.代理/抓包工具Mitmproxy
4.传输和存储数据工具protobuf
二,操作:
1.python3.7
手动部署——Ubuntu部署python3.7的开发和运行环境( 注:能apt-get install python3.7,绝不手动wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz)
(1)下载python(
官网指定平台下的python3.7.1
环境)(我劝大家看到三再操作)
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
(2)解压
tar -xvzf Python-3.7.1.tgz
(3)安装
cd Python-3.7.1;
./configure --with-ssl --prefix=/usr/local/python3
出现下面的错误:
configure: WARNING: unrecognized options: --with-ssl
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for python3.7... no
checking for python3... python3
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... checking for --without-gcc... no
checking for --with-icc... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/Python-3.7.1':
configure: error: no acceptable C compiler found in $PATH
这是没有c编译器的错误,解决方法为安装gcc,对策:
sudo apt-get install gcc #执笔小白
不行的话,先输入sudo apt-get update更新下,再不行就换下apkg源
(4)编译和安装:
make #可能需要安装mack,命令是:apt-get install make #执笔小白
make install
(5) 建立虚拟环境
使用python开发环境的时候,一般建立在虚拟环境,这样可以形成项目运行环境的隔离,防止不同依赖的项目的干扰。进入到当前用户Home
目录后,直接运行:
python3 -m venv py3venv --without-pi
注意:pyvenv脚本在3.7.1之后的版本中逐渐废弃,鼓励使用python3 -m venv,这样可以避免搞错pyvenv所关联的版本。如果提示没有找到 venv 命令,则安装:sudo apt install python3-venv。
经过上述操作,即可创建一份克隆有python3.7.1
的虚拟环境,然后激活虚拟环境:
source ./py3venv/bin/activate
即可使当前终端环境变成python3.7.1
的环境,看到终端前辍带有py3venv
表明已经成功:
(py3venv) root@Server:~#
然后输入命令python
,就可以看到进入到python3.7.1
的运行界面:
(py3venv) root@Server:~# python
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
我擦,Python 3.4.3;别慌,输入exit()退出python环境。输入deactivate
关闭虚拟环境
对策(*这里先不要操作,一直看到安装pip):
a)查看系统安装了的python版本
#查看版本
$python3 --version
Python 3.4.3
$python --version
--version:未找到命令
$python2 --version
Python 2.7.6
上面我们看到python3 对应 Python 3.4.3,python2 对应 Python 2.7.6;我们现在不能使用 Python 3.7.1版本。
b)然后我查到这些命令都在/usr/bin目录里。
#我们可以把Python 3.7.1对应的执行命令加到/usr/bin目录,命名为 Python3xb --xb小白
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3xb #执笔小白
c)检验我们创建的版本
$python3xb --version #执笔小白
Python 3.7.1
d)重新克隆python3xb到虚拟环境
python3xb -m venv py3xbvenv --without-pip
e)激活虚拟环境
source ./py3xbvenv/bin/activate
f)查看python版本
(py3xbvenv) root@Server:~# python
Python 3.7.1 (default, Feb 2 2021, 17:28:11)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
ok,终于正常了
二,安装pip
在py3xbvenv虚拟环境下面执行:
#这里我们不用apt-get install python-pip来安装pip,使用下面的命令:
curl https://bootstrap.pypa.io/get-pip.py|python
问题一:
找不到curl命令
#对策:退出虚拟环境安装curl,命令是:
apt-get install curl
问题二:
#问题如下:
Traceback (most recent call last):
File "<stdin>", line 24244, in <module>
File "<stdin>", line 199, in main
File "<stdin>", line 82, in bootstrap
zipimport.ZipImportError: can't decompress data; zlib not available
#找不到解压软件,对策:退出虚拟环境安装zlib
sudo apt-get install zlib* #可能需要apt-get -f instal修复不兼容的包
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
这里确实安装了zlib包,但并没有解决问题二;于是我又查了“python问题 Traceback (most recent call last)”
详细的错误请参照https://blog.csdn.net/weixin_43978056/article/details/105940157
页没有解决问题,我在想可能是python3xb的事,这可能涉及到太多类库的部署,单靠把/usr/bin/下的
python3xb改为python3风险太大。
这里我们先使用Python 3.4.3,下次遇到再研究这个问题。
尝试在Python 3.4.3安装pip
source ./py3venv/bin/activate
curl https://bootstrap.pypa.io/get-pip.py|python
又遇到问题:
Traceback (most recent call last):
File "<stdin>", line 24244, in <module>
File "<stdin>", line 199, in main
File "<stdin>", line 82, in bootstrap
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2222, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 2164, in _find_spec
File "<frozen importlib._bootstrap>", line 1940, in find_spec
File "<frozen importlib._bootstrap>", line 1916, in _get_spec
File "<frozen importlib._bootstrap>", line 1897, in _legacy_get_spec
File "<frozen importlib._bootstrap>", line 863, in spec_from_loader
File "<frozen importlib._bootstrap>", line 904, in spec_from_file_location
File "/tmp/tmp7uauuj1w/pip.zip/pip/_internal/cli/main.py", line 60
sys.stderr.write(f"ERROR: {exc}")
^
SyntaxError: invalid syntax
查到是“SyntaxError: invalid syntax” 的意思就是 语法错误;
大哥,我错了!换实体机吧。
sudo apt install python3-pip
然后,查看pip3版本
root@Server:~# pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
python3.5,不是Python 3.4.3了,真难受,它还升级了。。。,无所谓pip3到此可以用了,成功。
这里不要升级pip
给我经验就是能apt-get install python3.7,绝不手动wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
(看到这里。。。)
补充:
a)pip3所在的文件夹:/usr/local/bin;
b)升级了某些东西和升级了'pip install --upgrade pip',又搞坏了pip
报错:
Traceback (most recent call last): File "/usr/local/bin/pip", line 7, in <module> from pip._internal.cli.main import main ImportError: No module named _internal.cli.main
对策一:
https://blog.csdn.net/weixin_42069606/article/details/104914037
结论不好使,
对策二:https://www.pianshen.com/article/49071444786/
运行:easy_install pip #简易安装
终于正常了
对策三:https://www.baidu.com/link?url=yzU50y3ixAj6V_qZ_WbFUrDsM2EiRuIEa0iOsLyCpNqdZdI5joBqkm8G8eaPjaIy3xfvs_cpaKvWWIDMAY_DQK&wd=&eqid=de51b5690004a87a00000002601a8087(这个感觉靠谱,就是没给我试的机会)
‘b)’的结果如下
虚拟环境
(py3venv) root@XServer:~# pip --version pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7) (py3venv) root@Server:~# pip2 --version pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7) (py3venv) root@Server:~# pip3 --version -bash: /usr/local/bin/pip3: 没有那个文件或目录 (py3venv) root@Server:~# pip3.5 --version Traceback (most recent call last): File "/usr/local/bin/pip3.5", line 7, in <module> from pip._internal.cli.main import main File "/usr/local/lib/python3.5/dist-packages/pip/_internal/cli/main.py", line 60 sys.stderr.write(f"ERROR: {exc}")
实体机:
root@Server:~# pip --version
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
root@Server:~# pip2 --version
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
root@Server:~# pip2.7 --version
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
root@Server:~# pip3.5 --version
Traceback (most recent call last):
File "/usr/local/bin/pip3.5", line 7, in <module>
from pip._internal.cli.main import main
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/cli/main.py", line 60
sys.stderr.write(f"ERROR: {exc}")
^
SyntaxError: invalid syntax
得。又得用python2.8了。
三,安装mitmproxy
pip install mitmproxy
报错:
You are using pip version 8.1.1, however version 21.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command
呵呵,不安python3.7不行了。。
==================================
重新来过——https://blog.csdn.net/weixin_43256057/article/details/94555177
先省略。。。
本文来自博客园,作者:꧁执笔小白꧂,转载请注明原文链接:https://www.cnblogs.com/qq2806933146xiaobai/p/14362876.html