大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
成都创新互联-专业网站定制、快速模板网站建设、高性价比埇桥区网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式埇桥区网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖埇桥区地区。费用合理售后完善,10年实体公司更值得信赖。这篇文章主要讲解了python虚拟环境删除包无法加载的解决方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
项目开发一直在docker的虚拟环境上,遇到了一个问题,就是把虚拟环境的包删掉(rm -rf xxx)之后,再重新拷贝一个(跟原来包一模一样的文件夹)进去发现pycharm再也找不到这个包了,后来在同事的帮助下一步步的解决了这个问题:
解决流程:
1.定位问题
在虚拟环境下引入这个包:
#进入虚拟环境 source bin/activate #1.进入python #2.引入报错的包 (xenwebsite-env)[root@aeb02c10de04 xenwebsite-env]# python Python 2.7.3 (default, Nov 22 2012, 09:29:29) [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from pyxlib.flaskext.decorators import with_db_retry # 报错:说明当前环境下找不到这个包 Traceback (most recent call last): File "", line 1, in ImportError: No module named pyxlib.flaskext.decorators # 查看当前换下所有包的路径 >>> import sys >>> sys.path ['', '/opt/work/web/xenwebsite/xenwebsite-env/lib64/python27.zip', '/opt/work/web/xenwebsite/xenwebsite-env/lib64/python2.7', /opt/work/web/xenwebsite/xenwebsite-env/lib/python2.7/site-packages/httplib2-0.9-py2.7.egg] #发现没有我们路径,为了验证当前包是不是正确,那么把这个路径加入到当前的sys.path 里面来。 >>> sys.path.append('/opt/work/web/xenwebsite/xenwebsite-env/lib/python2.7/site-packages/pyxlib-1.1.dev_r1349-py2.7.egg') # 重新引入这个包看看报不报错 >>> from pyxlib.flaskext.decorators import with_db_retry # 这次没有报错,说明包本身没有问题,那么应该就是当前虚拟环境没有加载这个包,所以当前问题就是怎么让虚拟环境来加载这个包:退出python环境 >>> exit() # 在python里面,xxx.pth 文件是保存包路径的文件,于是我们想到,当前的虚拟环境下面的.pth文件是不是没有加载这个,于是先查找这个.pth文件 (xenwebsite-env)[root@aeb02c10de04 xenwebsite-env]# find / -name *.pth /opt/work/web/xenwebsite/xenwebsite-env/lib/python2.7/site-packages/easy-install.pth /opt/work/web/xenwebsite/xenwebsite-env/lib/python2.7/site-packages/setuptools.pth # 发现2个pth文件,我们打开看看发现,我们的第三方包都在 easy_install.pth 文件里面,而且发现报错的那个包并没有在这个列表里面: ./setuptools-34.3.3-py2.7.egg ./Flask_Cors-3.0.2-py2.7.egg # 于是就把报错的包路径加入进来 ./setuptools-34.3.3-py2.7.egg ./Flask_Cors-3.0.2-py2.7.egg ./pyxlib-1.1.dev_r1349-py2.7.egg # 重新把pycharm 重启发现包已经可见了,问题解决了