如何解决移动了virtualenv的文件夹后django就跑不起来了的问题

如何解决移动了virtualenv的文件夹后django就跑不起来了的问题-夏普博客

背景

  • 今天在看胡阳大神写的《Django企业开发实战》这本书,在第五章第一小节拆分完setting后书里面就推荐使用git来管理项目了,于是我就跑到了gitee上新建了一个仓库并克隆到了本地,然后就顺手把原先的文件夹移动进了新的仓库文件夹中,层级如下:
.
└── django-enterprise
    └── django-enterprise
        └── typeidea
            └── typeidea
                ├── blog
                │   └── migrations
                └── typeidea
                    ├── __pycache__
                    └── settings
                        └── __pycache__
10 directories

原本django-enterprise这个文件夹只有一个,现在我把它挪到了第一级的django-enterprise的下面变成了第二级,而.venv文件夹在第一级的typeidea的同级。

现象和解决办法

  • 移动完了之后我就执行source .venv/bin/activate进入到了虚拟环境,接着运行python manage.py startapp blog准备新建个django app,可是这个时候却报了下面的错误,
Traceback (most recent call last):
  File "manage.py", line 19, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

顿时我就傻眼了,心想这不是已经进入到了虚拟环境了么为啥还报错,心有不甘,又心想是不是没彻底进入虚拟环境,就又source了两遍,可是django这时还是报上面的错误,此外我还试过deactivate退出虚拟环境重新进,这样子又试了两遍,结果可想而知还是不行。
于是这时我决定借助狗哥的力量,于是Google了一下move virtualenv to another directory就在第一条结果的这个StackOverflow回答里面我找到了答案,原来.venv/bin/activate这个脚本中写死了,也叫作hard code了一个变量VIRTUAL_ENV,此时我们需要做的是用vim把这个变量的值改为你的.venv这个文件夹的实际的绝对路径,然后deactivate出去再重新source进来。

  • 另外还有一个问题相信细心的你也一定会发现,那就是pip list命令会报下面的错误:
$ pip list
zsh: /home/sharp/Workplace/django/django-enterprise/django-enterprise/.venv/bin/pip: bad interpreter: /home/sharp/Workplace/django/django-enterprise/.venv/bin/python3: no such file or directory

这个问题呢解决起来其实也很简单,那就是用vim打开这个pip文件,然后你会发现第一行python的shebang声明竟然也是hard code的,那么此时只需要像上面一样改为实际的绝地路径就行了,另外你如果习惯用pip3,那么就也打开修改一下。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注