https://blog.csdn.net/haiyanggeng/article/details/79215819 
https://blog.csdn.net/u010278162/article/details/52043308

PyCharm下解决Unresolved Reference问题
python在同级目录下理应可以直接import的,而到Pycharm的.py文件在同一级目录下调用却会出现Unresolved Reference,网上查了下资料,了解了一下python在import的时候到底执行了什么操作。在这之前先贴上解决方法:

进入PyCharm->Settings->Build,Excution,Deployment->Console->Python Console勾选上Add source roots to PYTHONPATH;
进入PyCharm->Settings->Project->Project Structure,选中框中文件目录(即你的需要相互调用的py文件所在目录)右键添加sources;
点击Apply和OK之后即可.(应该要重启Pycharm)
接下来大概了解下python在import的时候做的事情:

1. 创建一个新的,空的module对象(它可能包含多个module)

#一个module也就是一个.py文件,里面包含定义的函数和变量
1
2. 把这个module对象插入sys.module

#sys.modules是一个全局字典,该字典是python启动后就加载在内存中,每次导入模块的时候sys.modules都会将
    #它加入字典,sys.modules对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录
    #该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。
1
2
3
3. 装载module的代码(如果需要,首先必须编译)

4. 执行新的module中对应的代码

在执行第3步时,首先要找到module程序所在的位置,其原理为:如 果需要导入的module的名字是m1,则解释器必须找到m1.py,它首先在当前目录查找,然后是在环境变量PYTHONPATH中查找。 PYTHONPATH可以视为系统的PATH变量一类的东西,其中包含若干个目录。如果PYTHONPATH没有设定,或者找不到m1.py,则继续搜索 与python的安装设置相关的默认路径,在Unix下,通常是/usr/local/lib/python。事实上,搜索的顺序是:当前路径 (以及从当前目录指定的sys.path),然后是PYTHONPATH,然后是python的安装设置相关的默认路径。正因为存在这样的顺序,如果当前 路径或PYTHONPATH中存在与标准module同样的module,则会覆盖标准module。也就是说,如果当前目录下存在xml.py,那么执 行import xml时,导入的是当前目录下的module,而不是系统标准的xml。

了解了这些,我们就可以先构建一个package,以普通module的方式导入,就可以直接访问此package中的各个module了。

Python中的package定义很简单,其层次结构与程序所在目录的层次结构相同,这一点与Java类似,唯一不同的地方在于,python中的package必须包含一个init.py的文件。 
例如,我们可以这样组织一个package:

package1/
    __init__.py
    subPack1/
        __init__.py
        module_11.py
        module_12.py
        module_13.py
    subPack2/
        __init__.py
        module_21.py
        module_22.py
    ……
1
2
3
4
5
6
7
8
9
10
11
12
13
init.py可以为空,只要它存在,就表明此目录应被作为一个package处理。当然,init.py中也可以设置相应的内容。

Pycharm自定义包的导入相关推荐

  1. python自定义包_详解python自定义模块、包

    1.保存一个hello.py文件在F:/data/python目录下hello.py >>> def hello(x): print x 目录 导入 >>> imp ...

  2. python自定义包出现ModuleNotFoundError: No module named ‘package_name‘故障

    问题描述:首先我们需要了解如何去自定义一个包.我看到一篇不错的文章,链接如下: [Python]自定义包及3种包导入方式_祥的专栏-CSDN博客_python 自定义包 但是,当我完成了博主所说的步骤 ...

  3. python自定义包或模块在Linux服务器导入错误的解决办法

    python自定义包或模块在Linux服务器导入错误的解决办法 在本地机器上跑python代码,自己定义的文件进行导包运行是没有问题,但是放到linux服务器上的时候就会提示 ImportError: ...

  4. python包导入方式_python导包的几种方法(自定义包的生成以及导入详解)

    python 导入数据包的几种方法 1.直接导入整个数据包:improt 数据包 2.导入数据包中的某一个函数: from 数据包 improt 函数(当函数这一项为 * 时为导入整个数据包) 3. ...

  5. Phyton自定义包导入。

    说明:同一个项目下的自定义包. 项目层次: 1:先建好项目Pybasestudty 2:建Python package,包名:pytestpk,__init__.py是建包时自动产生的文件. 3:在该 ...

  6. NodeJS自定义包和模块的导入(require)、导出(exports)

    文件目录: package.json(npm初始化生成的文件) {"name": "customizepackage","version": ...

  7. Goland 导入自定义包问题解决

    今天在学习Go的面向对象时,想测试Go中类属性.方法的公私有问题,在另外定义一个包后,发现在main函数中无法导入. 在网上查了很多博客都没能解决问题,目录页照着修改了 ,什么GOPATH也修改了,参 ...

  8. go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案

    go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案 1.问题 写了个自定义的包 calc.go,在路径 $GOPATH/projec ...

  9. python导入自定义包时无法导入自己定义的包

    python导入自定义包时 显示找不到包,如下图 处理方法如下: 点击文件夹选择工作目录 点击后就可以正常导包啦

最新文章

  1. 定位(positioning)
  2. sping配置文件中引入properties文件方式
  3. 荷花旁的浪漫,优雅了谁的光年,清纯少女芭蕾写真
  4. 深入理解php底层:php生命周期 [转]
  5. View和ViewGroup常用方法
  6. linux下epoll如何实现高效处理
  7. KnowledgeTree简体中文汉化包安装指导
  8. 20135219洪韶武——信息安全系统设计基础第五周学习总结
  9. AnnotationConfigApplicationContext 通过调用注解Bean 定义读取器
  10. C++ vector使用的一些注意事项
  11. 【软件工程】IS的三级管理
  12. Pandas Window对象
  13. 远程配置jupyter notebook
  14. 带集成保护的共模滤波器(CMF)行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  15. SQL:postgresql查询七天内数据
  16. JAVA HD japan_小米小爱AI音箱HD【硬件分析】,你了解智能音箱吗
  17. MATLAB中多行注释的三种方法
  18. CANVAS中的lineWidth小计
  19. 为什么普通人做量化交易会亏钱?
  20. illegal instruction

热门文章

  1. Outlook中自定义新邮件提醒
  2. 单片机I/O口推挽输出与开漏输出的区别(open-drain与push-pull)
  3. 李永乐线性代数手写笔记-特征值和特征向量
  4. html如何将段落对齐,如何用CSS设置段落的垂直对齐(附代码)
  5. 中大计算机研究生英语免修条件,通知|关于接受2017级理科研究生 基础英语课程免修免考申请的通知...
  6. 查看程序占用内存_电脑内存不足怎么办
  7. java面试题 并发_Java 并发面试题(一)
  8. db2 某个字段排序_sql字段排序 rank over
  9. android 程序运行不了,当应用程序在后台运行或不运行时,Android – 推送通知工作不正确...
  10. python爬取有道词典_利用Python3和Charles爬取有道词典,生成翻译exe单文件