Win7 Python3.4下跨目录导入带依赖模块(不修改路径变量)
针对你的目录结构和Python 3.4环境,最稳妥的方法是把Scripts目录转为Python包,通过相对导入实现需求,具体步骤如下:
第一步:在
/Scripts/目录下创建一个空的__init__.py文件。这个文件的作用是告诉Python,Scripts是一个可导入的包,没有它相对导入会直接失效。第二步:修改
/Scripts/allScripts/main.py里的导入代码,改成相对导入形式:from ..myPyFile import modA这里的
..代表当前模块(main.py)所在的allScripts目录的上层目录(也就是Scripts),这样就能精准定位到myPyFile.py。第三步:正确运行main.py。注意不能直接双击main.py或者用
python allScripts/main.py运行,因为这种方式会让Python把allScripts当成顶层目录,导致相对导入报错。你需要打开命令提示符,导航到Scripts目录的父目录(即包含Scripts的那个文件夹),然后执行以下命令:python -m Scripts.allScripts.main用
-m参数以模块方式运行时,Python会自动识别包结构,同时保证myPyFile.py里导入同目录的x.py、y.py正常工作——因为它们处于同一个包目录下,Python会优先在包内查找这些模块,你原来的导入代码完全不需要修改(如果后续遇到小问题,也可以把myPyFile.py里的import x改成from . import x,这样更符合包内导入的规范)。
这种方案完全依赖Python原生的包管理机制,不需要修改任何系统路径或环境变量,完美适配你的Win7和Python3.4环境。
内容的提问来源于stack exchange,提问作者usustarr

