Python开发必备虚拟环境工具:virtualenvwrapper

在初学任何一种开发语言的时候,开发环境的搭建总会出现各种各样的问题,所以我将会在日后把我遇到的典型问题和解决方法都记录下来,方便日后查看。当然也许有人会说,当前我们可以使用Vagrant或者Docker这样的虚拟化或者容器化来做开发,但是我个人觉得掌握这些基本技能很重要,就好比武侠小说里面,真正武功高强的人,离开了神兵利器,照样可以以一敌百,无人可挡。当然,像Vagrant和Docker这样的神兵利器我们也需要去学,这样才能如虎添翼,好了,废话不多说,进入正题。

同样,在接着上一篇文章走向Python世界的大门:安装Python3.6之后,我们在上一篇的基础上,在windows和linux两种环境之下安装Python虚拟环境管理工具virtualenvwrapper。

Linux环境

首先,在Ubuntu上安装virtualenvwrapper可能会出现一些常见的问题,我把我安装当中遇到的一些问题和解决方法会写出来。

要安装virtualenvwrapper,直接在shell终端中输入:

pip3 install virtualenvwrapper

如果能够正常安装,那恭喜你,如果不能,则看下面有没有你遇到的问题和解决方法。

  • 问题1:
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

这应该是pip的bug,解决方法是修改  /usr/bin/pip3 文件,将文件中的以下内容:

from pip import main 
if __name__ == '__main__': 
    sys.exit(main())

改成

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

解决上面这个问题之后,再输入:

sudo pip3 install virtualenvwrapper

应该就可以安装成功了,安装成功之后,在shell终端中输入:

workon

测试一下,可能会出现缺少gdbm的错误,如果有,则安装gdbm即可:

sudo apt-get install python3.6-gdbm

到这里,virtualenvwrapper应该安装完成了,这时候还需要配置virtualenvwrapper的环境变量,首先在当前用户目录下创建.virtualenvs文件夹,用来存放所有的虚拟环境目录。然后通过which virtualenvwrapper.sh 查看路径,一般默认情况下是在 /usr/local/bin/virtualenvwrapper.sh。然后在当前用户目录下编辑 .bashrc文件(即 ~/.bashrc文件),使用vim ~/.bashrc 打开并编辑,在文件的末尾添加如下内容:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

然后退出 bashrc 文件,输入命令source ~/.bashrc,这时候可能会出现以下问题:

/usr/bin/python: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
set properly.

这是因为virtualenvwrapper依赖的Python环境设置不对,只需要再次使用vim ~/.bashrc 打开并编辑,再在export WORKON_HOME=$HOME/.virtualenvs上面一行添加export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.6,添加之后在bashrc文件的最后应该是这样的:

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

再次保存并退出 bashrc 文件,输入命令source ~/.bashrc,会出现如下输出:

virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/postmkproject
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/initialize
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /home/galaxy/.virtualenvs/get_env_details

里面的“galaxy“是我的用户名哦,不是你的。到这里,virtualenvwrapper就顺利安装完毕了,可以使用命令mkvirtualenv test来创建yi个名称为test的虚拟huanjing环境玩玩了。

Windows环境

windows环境下的安装这里就不多说了,很简单,只要打开cmd终端输入

pip install virtualenvwrapper-win

注意这里的virtualenvwrapper-win就是windows上面的virtualenvwrapper,不要以为名字不同就不一样。安装完了之后可以自己配置虚拟环境存放的路径,也可以不设置,使用默认的路径。若是要自己配置,只需建立环境变量,变量名称为WORKON_HOME,值就是你自己要设置的路径了。

很晚了,要睡觉了。

1,767 次浏览

发表评论

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