如何解决Python中与操作系统无关的路径导入
我正在并行开发一些小的Python包,并且我的存储库组织如下:
|- root_folder
|- source_code_folder
|- package1
|- package2
|-...
|- test_folder
|- package1_test_folder
|- package1_test.py
root_folder
是存储库,source_code_folder
包含要导入并在test.py
所包含的test_folder/packageX_test_folder
文件中进行测试的软件包。
我编写了以下代码行,以将source_code_folder
文件中的test_folder/package1_test_folder/test.py
(不是永久地)添加到PATH。
if __name__ == '__main__':
def __import_pkgs():
# automatically add to the path the source_code_folder folder if it is not contained yet
THIS_PATH = os.getcwd().split('\\')
for i in range(THIS_PATH.index('root_folder'),len(THIS_PATH)-1): THIS_PATH.pop()
ROOT_PATH = '\\'.join(THIS_PATH)
PKG_PATH = ROOT_PATH + '\\source_code_folder\\'
if sys.path.count(PKG_PATH) == 0: sys.path.append(PKG_PATH)
return None
__import_pkgs()
但是,这种__import_pkgs()
函数仅适用于基于Windows的环境。
有什么方法可以使其独立于OS系统吗?有人建议提高效率/优雅度吗?
解决方法
使用os.sep
获取路径分隔符,而不是显式使用正斜杠或反斜杠
我建议像这样使用“ os.path”:
import sys
from os import path
if __name__ == '__main__':
software_code_full_path = path.abspath(path.join(path.dirname(__file__),'../../source_code_folder'))
if software_code_full_path not in sys.path:
sys.path.append(software_code_full_path)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。