首先, 无论是import同目录中,还是子目录中的py文件都是没什么问题的,非常正常。
但是在import上级目录或是隔壁目录的时候就很尴尬了。
1.正常方法
最正常的方法当然是
import sys sys.path.append("../") from a import c
这是最为常见的解决方法,能解决一半问题,虽然pycharm会提示这里不对,但是运行时完全没有问题的。
但是却有致命的缺陷:对于这样引入的py文件,pycharm并不会给与任何的代码提示,对于里面包含的方法,并不会进行搜索和补完。这样做不仅效率低下,而且容易出错。
2.导入根
通过将该文件夹在pycharm的设置中设置为“根文件”,可以使错误提示消失,并且能够对py文件中的方法进行补全和提示,看起来不错?一开始是的,但是马上发现其他的问题,那就是,此时,即便没有这两行代码:
import sys sys.path.append("../")
仅保留此行:
from a import c
同样可以在pycharm的测试中运行——但是用系统的解释器不能运行。
3.很为难
如果不将目录设置为根,就可以保证程序不会变成“在pycharm中能运行,但在系统解释器中不能运行”的情况,但是没有自动补全效率会很低下;
如果将目录设置为根,那么可以自动补全提升效率,但是在头部导入的时候必须很小心谨慎,因为你即使是写错了或者没写,在pycharm中也是可以正常运行的,万一写错了,部署到生产环境中,结果报错,你都不知道哪里错了。
我觉得这肯定是我的姿势不对,请问有没有老师能告诉我一个能两全其美的方法?
from . 是本目录下导入, from .. 是上一级目录下导入