解决在项目中相对路径导入 与 绝对路径导入问题
2018-01-04 15:11
597 查看
背景:
在项目开发中,根据核心引擎架构开发组件功能,其中一部分功能要通过引擎实现,即用相对路径导入各个模块即可。
但是在开发期间,遇到一个需求,需要一个本地文件跑其中的一部分服务。因此出现了各种模块导入的问题。一开始使用sys.path.append将文件的路径导入后,以正常import modulename的方式导入。但是如果这部分的服务又会在引擎中被某些服务调用,则会报错。
最笨的解决方案是每个依赖文件写两个,/(ㄒoㄒ)/~~
BUT,Python能够通过os和sys解决这个问题。
解决方案:
思路:
假设有一个文件夹 app
若 app 下有
我们知道,package 的意义是作为一个整体,提供某些功能。因此,package 内部的各个 module 之间使用相对路径导入。
比如:在 module1.py 内,这样相对导入:
注意,问题来了,此时不能之间运行 module.py 这个文件,否则会报错:SystemError: Parent module '' not loaded, cannot perform relative import
我们只能在package外,也就是文件夹 app 外的 run.py文件中导入:
代码实现:
这样写就可以啦!无论是本地文件服务还是项目服务,都可以正常地运行了。注意,所以涉及的相关组件都要这样哦!
在项目开发中,根据核心引擎架构开发组件功能,其中一部分功能要通过引擎实现,即用相对路径导入各个模块即可。
但是在开发期间,遇到一个需求,需要一个本地文件跑其中的一部分服务。因此出现了各种模块导入的问题。一开始使用sys.path.append将文件的路径导入后,以正常import modulename的方式导入。但是如果这部分的服务又会在引擎中被某些服务调用,则会报错。
最笨的解决方案是每个依赖文件写两个,/(ㄒoㄒ)/~~
BUT,Python能够通过os和sys解决这个问题。
解决方案:
思路:
假设有一个文件夹 app
若 app 下有
app/__init__.py文件,则此 app 被视作一个 package,而 app 下的其他文件/文件夹被视作 module
我们知道,package 的意义是作为一个整体,提供某些功能。因此,package 内部的各个 module 之间使用相对路径导入。
比如:在 module1.py 内,这样相对导入:
from .module2 import myClass2
注意,问题来了,此时不能之间运行 module.py 这个文件,否则会报错:SystemError: Parent module '' not loaded, cannot perform relative import
我们只能在package外,也就是文件夹 app 外的 run.py文件中导入:
from app.module2 import myClass2
代码实现:
# add the model path to sys.path import sys import os current_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ROOT_PATH = os.path.join(current_path, '..') sys.path.append(ROOT_PATH) # print(current_path) # print(ROOT_PATH) # /Users/zoe/dcba/service/.. from service.tms import tms #供参考
这样写就可以啦!无论是本地文件服务还是项目服务,都可以正常地运行了。注意,所以涉及的相关组件都要这样哦!
相关文章推荐
- JavaWeb 项目中的绝对路径和相对路径以及问题的解决方式
- 在JAVA WEB项目中,JSP中的图片无法显示,绝对路径和相对路径问题的解决办法。
- 【JSP】JSP项目相对路径与绝对路径问题
- 同一tomcat部署多个项目相对路径绝对路径问题示例
- 项目中 关于相对路径和绝对路径的问题
- base标签和JSP声明变量解决文件相对路径和绝对路径问题
- javaweb项目绝对和相对路径问题
- Unity解决dll库导入新项目时路径不存在的问题
- android获取项目下的一张图片的绝对路径问题以及解决方法
- Java Web中解决路径(绝对路径与相对路径)问题
- (转)java项目的中绝对相对路径问题
- 解决 IDEA 发布到 Tomcat 项目的 404 和 相对路径 问题
- android获取项目下的一张图片的绝对路径问题以及解决方法
- 网站页面导入css,图片等文件的相对路径和绝对路径问题
- JavaWeb 项目中的绝对路径和相对路径问题
- 解决 IDEA 发布到 Tomcat 项目的 404 和 相对路径 问题
- JavaWeb 项目中的绝对路径和相对路径以及问题的解决方案
- 解决 IDEA 发布到 Tomcat 项目的 404 和 相对路径 问题
- mvc 解决StyleBundle中 图片绝对路径 装换成相对路径的问题 CssRewriteUrlTransform
- web项目绝对路径与相对路径的问题