Python项目迁移相关

2020-08-21  本文已影响0人  遥远的清平湾

网上其他人给出的答案

https://www.jianshu.com/p/7530c2401273

需求:电脑A的项目迁移到电脑B

出现的问题

本人按照上面的方法从来没成功过,也踩了不少坑。一般都是卡在上面的步骤2中,即电脑A导出的包信息根本不能在电脑B上成功安装。错误类型包括:
1、找不到指定版本的包;
2、安装时timeout问题;
3、。。。等

先说找不到指定版本的包,原因可能是电脑B上的Python版本就没有与之对应的requirements.txt中指定包的版本,这一般发生在电脑B和电脑A的Python版本不一致的情况下。例如,电脑A的Python版本为3.6.6,而电脑B的项目中用了Python 3.8,然后我们需要安装TensorFlow 1.12.0,这时就会出现上面的情况。那么为什么在Python 3.8版本下不能安装TensorFlow 1.12.0呢?这个问题的答案可以从国内Python镜像库,例如https://pypi.tuna.tsinghua.edu.cn/simple/tensorflow/
找到:

image.png
由上面的图可以看到,cp36代表适用于Python 3.6的意思,我们发现,TensorFlow 1.12.0版本就没有适配Python 3.8版本的。所以我们在Python 3.8中安装TensorFlow 1.12.0会提示找不到对应的版本。

上面只是列举了一种情况。有时电脑A和电脑B的Python版本一致,比如都是Python 3.6.6,但还是会提示个别包找不到对应的版本。具体原因不详,我也没有继续研究。

关于pip安装包时出现的timeout问题,网上也有解决方案。

总而言之,用pip install -r requirements.txt命令还没成功过。

关于虚拟环境venv

最直接的想法是,我们能不能把直接把电脑A中的venv也直接复制到电脑B的项目中呢?答案是肯定的。

电脑B中安装和电脑A中相同版本的Python,然后把电脑A中的项目可以整个复制到电脑B,或者只复制venv和需要的项目文件,然后pycharm中设置项目的interpreter为项目路径中的python.exe,一般位于项目的\venv\Scripts\目录下。如图:

image.png

上面操作完成后,有时会出现ValueError: failed to parse CPython sys.version: '3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)]'错误,如图:

image.png
错误的原因就在于_sys_version_parser函数没能成功解析出python的版本,如图:
image.png
image.png
可以看到,_sys_version_parser函数解析了version,build info,build date,time,compiler信息,但是没有考虑|Anaconda, Inc.|(这个信息也出现了错误信息里),所以需要加入r'(?:\|[^|]*\|)*\s*'命令去掉|Anaconda xxx|,修改如下:
image.png
参考:https://blog.csdn.net/piaoxue1949/article/details/80295385
上一篇 下一篇

猜你喜欢

热点阅读