pycharm下调用自己的(python)py文件

Posted yifanhunter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pycharm下调用自己的(python)py文件相关的知识,希望对你有一定的参考价值。

目录

  1. 同一个目录下
  2. 不同目录下
  3. 举例说明其它方法
  4. Pycharm下的调用问题

一、同一个目录下

调用同一个目录下的时,可以直接:

  1. import XXX.py
  2. from 文件夹 import XXX.py

只是第一种形式会有波浪线提醒,不过不影响运行。

波浪线问题消除见第四章

二、不同目录下

在上面基础上,加上层级名称即可

当然也可以通过指定路径的方式处理,见第三章

三、举例说明其它方法

A

|----- __init__.py

|----- a.py

|---------B

|--------- __init__.py

|---------b.py

|---------C

|--------- __init__.py

|--------c.py

如图所示结构树,B,C同属于A的子目录,但是B,C之间是平行的。。。

b.py,c.py代码分别如下:

b.py:

def b_hello():

print "B_HELLO"

c.py:

def c_hello():

print "C_HELLO"

3.1 如果Aa.py要调用B中或者Cpy

则可以如下方式调用(以B为例)

from B import b

b.b_hello()

运行结果:B_HELLO

3.2 如果是B中或者Cpy调用B中或C

这个时候如果我们依旧用如上所说调用,则会报错(这里是b.py调用c.py)

>>>

Traceback (most recent call last):

File "E:\\testnow\\A\\B\\b.py", line 1, in <module>

from C import c

ImportError: No module named C

所以,这种方法不行,那如何做呢,如下

import sys

sys.path.append(\'E:\\\\testnow\\\\A\\\\C\')

import c

def b_hello():

print "B_HELLO"

c.c_hello()

用这种方法,输出结果是:C_HELLO

也即刚才上面的"from 文件夹 import 模块名"比较适用于父目录调用子目录的情况(当然也可以参照第二章的多个嵌套形式);而第二种方法则对所有的情况都适用,包括两个模块甚至都不在一个盘的情况。这里需要注意的一点是:sys.path添加目录时注意是在windows还是在linux下,windows下需要\'\\\\\'否则会出错。(我在这点上走了很久的弯路)

四、Pycharm下的调用问题

pycharm在同目录下import,pycharm会提示错误,但是可以运行

原因是: pycharm不会将当前文件目录自动加入自己的sourse_path。

解决方案:右键make_directory as-->sources path将当前工作的文件夹加入source_path就OK了

以上是关于pycharm下调用自己的(python)py文件的主要内容,如果未能解决你的问题,请参考以下文章

Pycharm下同一目录的py文件不能相互调用的原因分析

Python import 同文件夹下的py文件的函数,pycharm报错

python3在pycharm中为啥导入random模块不能用? TypeError: 'module' object is not callable

在pycharm中导入自定义模块

怎样用pycharm 把.py文件编译成可以单独运行的exe文件

python3在pycharm中为什么导入random模块不能用? TypeError: 'module' object is not callable