Python项目迁移相关

需求:电脑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/
找到:

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

如果不能运行,则需要设置venv下面的pyvenv.cfg文件中的python路径

参考:
https://blog.csdn.net/piaoxue1949/article/details/80295385
https://www.jianshu.com/p/7530c2401273

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。