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

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

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

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

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

#!/home/amily/workspace/env_nmf/bin/python3.6

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal.cli.main import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

解决办法
使用批处理命令,快速替换指定操作目录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\/amily\/workspace -rl env_nmf/bin`

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

python -V
pip -V
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装virtualenvwrapper和virtualenv之前,你需要确保已经安装了Python。在macOS上,Python通常预装在系统中。你可以通过在终端中运行以下命令来检查Python是否安装: ``` python --version ``` 如果Python已经安装,你应该能够看到Python的版本号。 接下来,我们将安装virtualenvvirtualenvwrapper。你可以使用pipPython的包管理器,来安装它们。在终端中运行以下命令: ``` pip install virtualenv virtualenvwrapper ``` 安装完成后,我们需要设置virtualenvwrapper的环境变量。打开终端配置文件(通常是.bashrc或.zshrc,根据你使用的shell不同可能会有所不同),并添加以下行: ``` export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Devel source /usr/local/bin/virtualenvwrapper.sh ``` 保存文件并重新加载配置文件: ``` source ~/.bashrc ``` 或 ``` source ~/.zshrc ``` 现在,我们可以使用virtualenvwrapper创建Python虚拟环境。首先,我们需要创建一个用于存储虚拟环境的目录。在终端中运行以下命令: ``` mkdir -p $WORKON_HOME ``` 接下来,我们可以使用mkvirtualenv命令来创建一个新的虚拟环境。例如,要创建一个名为myenv的虚拟环境,请运行以下命令: ``` mkvirtualenv myenv ``` 创建完成后,我们可以使用workon命令激活虚拟环境: ``` workon myenv ``` 现在,你已经在myenv虚拟环境中了。你可以使用pip在这个环境中安装任何Python包。 当你完成工作并想要退出虚拟环境时,请运行deactivate命令: ``` deactivate ``` 如果你想删除虚拟环境,请运行rmvirtualenv命令: ``` rmvirtualenv myenv ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值