今天也要加油啊江同学

踩坑日记-后端篇

踩坑日记-后端篇

  1. 登上好久不看的服务器 想看一下之前的项目代码 发现报错:

查了一下,好像是因为django不再支持python3.5

于是将python3.5更新至python3.9:

首先,下载python3.9:

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

解压并进入:

  • tar -zxf Python-3.9.0.tgz
  • cd Python-3.9.0
     
然后编译:
  • ./configure
  • ./configure –enable-optimizationsmake

  • make
  • sudo make install
这个过程可能会报错:ModuleNotFoundError: No module named ‘_ctypes’。如果报错,那么:
补全配置:
  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get dist-upgrade
  • sudo apt-get install build-essential python-dev python-setuptools         
  • python-pip python-smbus
  • sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
  • sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
  • sudo apt-get install libssl-dev openssl
  • sudo apt-get install libffi-dev

清理

  • sudo apt autoremove

删除python和pip的软链接,添加新链接:

  • rm -rf /usr/bin/python3
  • rm -rf /usr/bin/pip3
  • ln -s /usr/local/bin/python3.9 /usr/bin/python3
  • ln -s /usr/local/bin/pip3.9 /usr/bin/pip3

验证:

  • python3 –version

然后,使用pip3 list,pip3 -V等命令时会报错:

-bash: /home/ubuntu/.local/bin/pip3: No such file or directory

查了一下,好像是因为python改变了版本,所以pip要重新安装。

重新安装pip:

第二步的时候还是会报错:

  • subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.

两种方法:一种是找到lsb_release,然后挪到python3.9的库里,再找到commandnotfound文件夹也放进去。这种比较合理,但是我试了还是会报错?

于是采用第二种:mv或者cp把/usr/bin/lsb_release删除或者放到其它地方。

解决了这个问题。然后一大堆库要重装。。难受了

 

2. 在重装pip的库的的时候遇到了问题:

python3.9 ModuleNotFoundError: No module named ‘_bz2’ python3.9

查了一下,有人说把python3.5下的bz2那个文件cp一份到python3.9下就可以了

https://blog.csdn.net/u013685264/article/details/108274609

但是试了无果。于是先重新安装一下libbz2的环境,然后重新编译python:

https://blog.csdn.net/qq_32146369/article/details/107615462

然后pip的时候遇到了新问题:

InvalidSchemeCombination’ from ‘pip._internal.exceptions’ (/usr/local/lib/python3.9/site-packages/pip/_internal/exceptions.py)

查了一下,好像是重新编译后的python自带的最新的pip 21.1版本有bug:

https://github.com/pypa/pip/issues/9880

老倒霉蛋了。于是重装pip,与问题1里的步骤一样:

  • curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  • python3 get-pip.py –force-reinstall
  • pip -V

3. conda新建环境时报错

conda env create --prefix <your_conda_env_path> -f environment.yml
报错内容:sys.stderr.write(f"ERROR: {exc}")

原因是pip21不支持python2

于是切换回pip20,但是python2和python3有两个pip,我们下载的是对于python3的。这时候发现切换pip版本报错:

from pip._internal import cmdoptions ImportError: cannot import name SourceDistribution
似乎是pip20的bug。参考解决:
https://blog.csdn.net/weixin_43894041/article/details/103887966
下载了一个get-pip回到pip21.
但还是解决不了问题啊,于是想去https://bootstrap.pypa.io/2.7/get-pip.py下载一个用于python2.7的pip,但是发现已经404了?可能是因为python2.7已经全面不支持了
没办法,找了一个镜像,得到了get-pip.py,然后
conda create --name py2 python=2 新建一个python2的环境
source activate py2 切换到python2环境后,
python get-pip.py 得到pip for python2.7
尝试再运行conda,成功

4. pytorch-ignite报错:

File “/home/xinyu/anaconda3/envs/py27/lib/python2.7/site-packages/ignite/engine/engine.py”, line 291, in _handle_exception

    raise e

KeyError: ‘keypoints’

这个问题折磨了我好几天,最后发现是pytorch的版本不对。。为什么没有发现这个问题呢,因为是ignite在报错,而且environment.yml里没有注明pytorch版本。师兄跑得起来我跑不起来比对了一下双方conda里的库才发现可能是这里有问题。更换torch==1.2.0后解决问题

xinyu