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

168次阅读
没有评论

共计 1438 个字符,预计需要花费 4 分钟才能阅读完成。

如何解决移动了 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,那么就也打开修改一下。

正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2019-12-01发表,共计1438字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)