Python工程名更改后venv虚拟环境修复

2,690 阅读1分钟

因为公司在新建Git仓库的时候没有按照我的工程名命令,导致我在服务器上拉取下来的工程名跟本地开发的不一样。虽然两个工程名从名字上看起来可以知道其实是一个工程,但是为了避免日后维护的时候遗忘导致出错,所以我决定将从Git上拉取下来的Git仓库重命名。

为了便于描述,工程名使用以下名称进行描述:

  • 本地开发环境的工程名:new
  • Git仓库拉取下来的工程名:old

使用 mv old new 重命名工程名并 activate 激活虚拟环境,再次运行项目始终报 Non-ASCII character 编码错误。而这样的错误一般出现在 Python2 中比较多,所以我怀疑可能是虚拟环境根本没有激活,即使有 (venv) 这样的显示。用 python -V 查看了一下当前环境的 Python 版本,果然是 Python2 的版本。

经过查找资料发现,在用 virtualenv venv 创建虚拟环境的时候,activate、activate.fish、pip等这些文件的虚拟环境路径是写死的,也就是说直接修改了工程名虚拟环境中相关文件的引用路径是不会自动修改的。当然,如果你创建的虚拟环境文件不在工程里,是没有这样的问题的。

依次修改相应的文件即可修复虚拟环境:

# activate文件修改如下
# VIRTUAL_ENV="/opt/old/venv"
VIRTUAL_ENV="/opt/new/venv"

# activate.fish文件修改如下
# set -gx VIRTUAL_ENV "/opt/old/venv"
set -gx VIRTUAL_ENV "/opt/new/venv"

# pip、pip3、pip3.6,将第一行修改成第二行
#!/opt/old/venv/bin/python3
#!/opt/new/venv/bin/python3