部署一个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

   先省略。。。



365个夜晚,我希望做到两天更一篇博客。加油,小白!
原文地址:https://www.cnblogs.com/qq2806933146xiaobai/p/14362876.html