Linux环境下Virtualenv环境直接拷贝后python和pip用不了

Virtualenv创建的环境拷贝到新的目录后也能用,只需要修改路径

举个例子

假设环境名为:env_nmf
该环境原始的目录是:/home/amily/workspace/env_nmf
将环境拷贝到这个目录:/data3/amily/sourcecode/env_nmf

核心:环境直接拷贝到新的目录能够生效的根源是编译器路径正确

对于virtualenv创建的环境,其bin目录下的每一个可执行文件,会指定程序被执行时所使用的编译器所在的路径,因此为了能够保证这些可执行文件能够正常的被调用执行,需要批量的修改文件中指定编译器的路径为正确的路径即可生效。

下图红框内就是env_nmf/bin/f2py3.6这个可执行文件所指定的编译器(你用vi来查看该目录下其他文件也会有类似下图这句#!),如果我们直接通过source激活这个环境来使用python是会报错的,主要原因就是环境中使用的路径还是旧的路径,需要修改成拷贝后的新的路径才能正常访问。
在这里插入图片描述

解决办法

使用批处理命令,快速替换指定操作目录env_nmf/bin下的所有文件中的旧路径为新路径
需要注意的是:原始字符串是路径,路径中出现/会与命令中的/重复,需要用**右斜杠“\”**进行转义
这里一定要写对!这里一定要写对!这里一定要写对!

// linux中的sed命令可以实现对指定路径env_nmf/bin下的所有文件进行字符串替换
// 语法:
sed -i "s/原始字符串/新的字符串/g" `grep 原始字符串 -rl 指定操作目录`
// 本例中的命令
sed -i "s/home\/amily\/workspace/data3\/amily\/sourcecode/g" `grep home\/lpz\/workspace -rl env_nmf/bin`

上述命令运行完成后再使用source来激活环境,即可正常使用环境的python和pip~
测试是否正常使用的简单办法就是输出python和pip版本,如果这两个都不能正常,后面要跑程序很难跑成功。

python -V
pip -V

猜你喜欢

转载自blog.csdn.net/happyPatienze2016/article/details/121821886
今日推荐