zoukankan      html  css  js  c++  java
  • Python中的class为什么会缺失属性?

    首先哈,记录下这次奇怪的服务器部署情况。

    pycharm中的代码原封不动的上传到服务器上,提供几个接口服务,本地提供接口都很ok,

    上传到服务器上整体GG思密达~

    这个项目属于二次维护,linux + 爬虫 + 简单的flask的demo + mysql,爬虫部分所有的接口代码都弄好了,

    flask那边不管怎么调用都无法直接去调用爬虫代码部分的方法,总是提示调用的爬虫类下面没有对应的方法。

    好吧,不管那么多,使用print(dir(class_name))输出了下当时的变量情况,发现爬虫类导入进来了,并且有两个

    可以直接使用的接口,但是其他的集体报错。

    第一次很懵逼,记录下排查情况:

    1.排查导入的模块命,路径,模块内的方法是否正确

    2.排查代码中是否有函数或者方法和导入的第三方模块存在同名的情况,有则修改自己写的代码的函数名

    3.如果确实上面两步都没问题的情况下,打开所执行文件的目录,当中可以看到有一个__pyc__文件夹,

    将里面所有的以.pyc后缀命名的文件全部删除(可以看下这些文件的变动时间)。这些文件时干什么的呢,

    从找到的文章或者参考资料中大概意思就是,python代码运行以后会生成这么一堆玩意儿,

    如果你的代码没什么变动的话,下一次运行的话,就直接在这些文件里面读取运行结果,达到快速的目的。

    好吧,不能说这个没啥用,毕竟存在即合理,现阶段不能明白的东西后面自然会明白了。当然啦,如果你的代码变动了,

    但是它还是原来的结果,那么可能会有部分原因来自于这里,做过django的话,当中数据库变动后,迁移数据库和完成映射

    的道理是一样的。

    4.如果前面三步都没问题的话,回到本质,当前对象没有某个某个属性,漂亮,就是没有调用上嘛,在直白点说,就是它找不到这个东西嘛,

    找到了肯定就不用你在搞定了嘛,那你就直接去告诉它,我现在哪个哪个文件夹下面有什么什么代码,你必须得给我跑一下!

    思路有了,怎么解决?简单嘛。

    首先在windows中pycharm中代码的查找是一层层的往上找,linux则不会这样,

    1.linux中python没问题的情况下,输入  python

    然后  import sys

    然后  sys.path

    然后  出来一个列表

    然后  找到site-packages这个路径

    然后  cd /xxx/xxx/xxx/site-packages

    然后  新建一个.pth文件,例如我新建了一个xxx_project.pth

    然后  将需要运行的代码最高层的目录输入到这个文件,比如 /home/xxxx/xxxx/xxx/我的代码

    一行写一个路径,个人建议直接写绝对路径

    然后保存文件,接下来直接执行就可以了

    首先这个pth文件放在了site-packages中,相当于告诉它,一会儿跑代码的时候这几个特别注意下,都给我跑了,别漏了啊

    之前不是错误提示没有这个属性吗,很好,我现在直接明明白白的告诉你,这个属性在哪里,问题就搞定了。

    自有风云来时雨, 似有风霜沾蓑衣
  • 相关阅读:
    python实用库:PrettyTable 学习
    centos启动错误:Inodes that were part of a corrupted orphan linked list found.
    C++:in namespace 'std' does not name a template type
    小程序实现单词查询搜索及搜索的历史记录
    小程序图片懒加载较完美解决方案
    下载文件到本地解压压缩包出现文件损坏,报错问题已解决
    彻底理解cookie,session,token
    vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack项目实战系列之二)
    与关系型数据库相比,MongoDB的优缺点
    漫谈JS 的继承方式
  • 原文地址:https://www.cnblogs.com/meipu/p/13559468.html
Copyright © 2011-2022 走看看