OS Python 中的独立路径导入
OS independent path import in Python
我正在并行开发一些小的 Python 包,我将我的存储库组织如下:
|- root_folder
|- source_code_folder
|- package1
|- package2
|-...
|- test_folder
|- package1_test_folder
|- package1_test.py
其中 root_folder
是存储库,source_code_folder
包含 test_folder/packageX_test_folder
.test.py
文件中要导入和测试的包。
我已经编写了以下代码行以将来自任何 test_folder/package1_test_folder/test.py
文件的 source_code_folder
(不是永久的)添加到 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 系统?任何人有任何建议可以使它更多 efficient/elegant?
使用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)
我正在并行开发一些小的 Python 包,我将我的存储库组织如下:
|- root_folder
|- source_code_folder
|- package1
|- package2
|-...
|- test_folder
|- package1_test_folder
|- package1_test.py
其中 root_folder
是存储库,source_code_folder
包含 test_folder/packageX_test_folder
.test.py
文件中要导入和测试的包。
我已经编写了以下代码行以将来自任何 test_folder/package1_test_folder/test.py
文件的 source_code_folder
(不是永久的)添加到 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 系统?任何人有任何建议可以使它更多 efficient/elegant?
使用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)