本文解决报错问题有:

 1 执行source .bashrc报错   Command ‘‘ not found, but can be installed with:

2 虚拟环境下安装django一直报错 raise ReadTimeoutError(self._pool, None, "Read timed out.")

3 已安装成功Django,import时依然提示ImportError: No module named Django


一、为何需要虚拟环境?

在开发过程中,当需要使用 python 的某些工具包/框架时需要联网安装。

sudo pip install django==2.2.5

使用如上命令,会将Django安装到 /usr/local/lib/python版本号/dist-package路径下面

如果在一台电脑上,想开发多个不同的项目,需要用到同一个包的不同版本

如果使用上面的命令,在同一个目录下安装或者更新,新版本会覆盖以前的版本其它的项目就无法运行了

这个时候,就需要虚拟环境了!

  • 虚拟环境可以搭建独立版本的 python 运行环境,使得各个版本之间不会互相影响
  • 所有的虚拟环境,都位于 /home/ 下的 隐藏目录 .vortualenvs 下面 (自己建立的)
二、虚拟环境的搭建

1 安装虚拟环境

sudo pip install virtualenv

sudo pip install virtualenvwrapper

2 创建目录存放虚拟环境

mkdir $HOME/.virtualenvs

cd $HOME/.virtualenvs 可以进入就是创建成功

3 打开 ~/.bashrc 文件,添加下面内容:

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

 然后运行 source ~/.bashrc

 执行source .bashrc报错

   Command ‘‘ not found, but can be installed with:

解决方案:

将上面的两行换为:

export VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3'

source /usr/local/bin/virtualenvwrapper.sh

 

第一行的路径是python3路径,使用 which python3   命令查看

 然后运行 source ~/.bashrc,就成功了!

4 新建一个python3 的虚拟环境

 mkvirtualenv -p python3 py3_test_01   # 创建成功就默认进入该虚拟环境

  • py3_test_01 就是这个虚拟环境的名字
  • 创建虚拟环境,必须联网
  • -p python3  指定版本
  • 创建成功就默认进入该虚拟环境

workon 命令,可以查询虚拟环境

 

workon + 虚拟环境名字   # 切换虚拟环境

rmvirtualenv + 虚拟环境名字 # 删除虚拟环境

不能删除正在使用的虚拟环境 

应该先退出虚拟环境, deactivate 然后删除

 

5  虚拟环境可以正常安装其它工具包,但是需要首先进入虚拟环境,

例如:安装 Django

进入对应的虚拟环境,然后安装(需要联网)

sudo pip install django==2.2.5

但是虚拟环境下安装django一直报错 

raise ReadTimeoutError(self._pool, None, "Read timed out.")


raise ReadTimeoutError(self._pool, None, "Read timed out.")
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.


报错部分如下:

 File "/usr/lib/python3/dist-packages/pip/_internal/utils/ui.py", line 160, in iter
    for x in it:
  File "/usr/lib/python3/dist-packages/pip/_internal/network/utils.py", line 15, in response_chunks
    for chunk in response.raw.stream(
  File "/usr/share/python-wheels/urllib3-1.25.8-py2.py3-none-any.whl/urllib3/response.py", line 564, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/usr/share/python-wheels/urllib3-1.25.8-py2.py3-none-any.whl/urllib3/response.py", line 529, in read
    raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
  File "/usr/lib/python3.8/contextlib.py", line 131, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/share/python-wheels/urllib3-1.25.8-py2.py3-none-any.whl/urllib3/response.py", line 430, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

请求网络超时,主要是因为网络(我下载时是热点且信号不好)和的问题。 

解决方法

1 设置一下超时时间  

pip --default-timeout=100 install -U pip

然后就成功了!

2 如果方法1还是不行,就更换源为阿里源或者清华源

pip install django -i https://mirrors.aliyun.com/pypi/simple/

查看安装的 django 版本

python -m django --version

No module named django  报错 

虚拟环境显示没有安装,重新执行安装命令,又显示已经安装了

执行 pip list 发现没有 django

 原因:django安装的包在python的默认路径下

而  并没有 安装在 虚拟环境中 !!!

(py3_test_01) root@hecs-401527:~/.virtualenvs# sudo pip install django==3.2.13
Requirement already satisfied: django==3.2.13 in /usr/local/lib/python3.8/dist-packages (3.2.13)
Requirement already satisfied: asgiref<4,>=3.3.2 in /usr/local/lib/python3.8/dist-packages (from django==3.2.13) (3.6.0)
Requirement already satisfied: pytz in /usr/local/lib/python3.8/dist-packages (from django==3.2.13) (2023.3)
Requirement already satisfied: sqlparse>=0.2.2 in /usr/local/lib/python3.8/dist-packages (from django==3.2.13) (0.4.4)

 

尝试:重新建立一个虚拟环境,然后下载 django新的一个版本  依旧无效 

此时,发现在xshell终端建立的虚拟环境,在华为云控制台的终端连接根本找不到,

所以不同的终端也是有影响的,后面在华为云终端进行的操作

 No module named django  报错      解决方法

打开 ~/.bashrc 文件,添加下面内容:

export WORKON_HOME=$HOME/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
export PATH=$HOME/.local/bin:$PATH

很关键的四行!!!!  

然后 source ~/.bashrc 

然后删除虚拟环境,重新建立一个,然后下载django

随后 pip list 成功!

至此,django 在虚拟环境就安装成功了!