网上其他人给出的答案
如https://www.jianshu.com/p/7530c2401273
需求:电脑A的项目迁移到电脑B
- 步骤1:在电脑A项目的terminal中导出需要的包及版本,命令为
pip freeze >requirements.txt
,如图
pycharm中导出包信息 - 步骤2:电脑B中创建项目及虚拟环境,把
requirements.txt
文件复制到项目文件夹下,运行命令pip install -r requirements.txt
,如图
安装包 - 步骤3:把电脑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/
找到:
由上面的图可以看到,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\
目录下。如图:
上面操作完成后,有时会出现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)]'
错误,如图:
错误的原因就在于
_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
网友评论