带有绝对路径的python导入

时间:2019-03-15 16:45:31

标签: python

我具有以下文件夹结构,并希望找到一种导入python模块的好方法。

project1/test/benchmark/benchmark_project1.py

#in benchmark_project1.py
from project1.test.benchmark import *

我的问题是如何摆脱project1,因为它可能会重命名为“ project2”或其他名称。我想将import与绝对路径一起使用,但不知道实现该目标的好方法。

1 个答案:

答案 0 :(得分:0)

您可以使用os.chdir()在import语句之前更改目录,然后再将其更改回来。这将允许您指定要导入的精确文件。您可以使用os.listdir()获取目录中所有文件的列表,然后简单地对其进行索引。使用循环将获取文件夹中的所有模块,或者根据某种模式提供正确的索引将为您提供特定的索引。 glob模块允许您使用正则表达式选择文件。

import os

cwd = os.getcwd()

new_dir = 'project1/test/benchmark/'
list_dir = os.listdir(new_dir) # Find all matching

os.chdir(new_dir)
for i in range(len(list_dir): # Import all of them (or index them in some way)
    module = list_dir[i][0:-3] # Filter off the '.py' file extension
    from module import *
os.chdir(cwd)

或者,您可以将位置添加到路径中,而不用更改目录。请查看this question,了解一些其他资源。