共计 1438 个字符,预计需要花费 4 分钟才能阅读完成。
背景
- 今天在看胡阳大神写的《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
,那么就也打开修改一下。
正文完
发表至: Django框架
2019-12-02