美文网首页
Python项目迁移相关

Python项目迁移相关

作者: 遥远的清平湾 | 来源:发表于2020-08-21 18:35 被阅读0次

    网上其他人给出的答案

    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/
    找到:

    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

    相关文章

      网友评论

          本文标题:Python项目迁移相关

          本文链接:https://www.haomeiwen.com/subject/uyhpjktx.html