8
說我有一個結構化的Python項目如下:在Python項目使用相對路徑讀取文件
project
/data
test.csv
/package
__init__.py
module.py
main.py
__init__.py
:
from .module import test
module.py
:
import csv
with open("..data/test.csv") as f:
test = [line for line in csv.reader(f)]
main.py
:
import package
print(package.test)
當我運行main.py
我得到以下錯誤:
C:\Users\Patrick\Desktop\project>python main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
import package
File "C:\Users\Patrick\Desktop\project\package\__init__.py", line 1, in <module>
from .module import test
File "C:\Users\Patrick\Desktop\project\package\module.py", line 3, in <module>
with open("../data/test.csv") as f:
FileNotFoundError: [Errno 2] No such file or directory: '../data/test.csv'
但是,如果我從package
目錄我沒有得到任何錯誤,運行module.py
。因此,open(...)
中使用的相對路徑似乎只與源文件從哪裏運行(即)有關?我不想使用絕對路徑。有什麼辦法來解決這個問題?
作爲旁註,引用來自PEP8:_「對包裝內進口的相對進口非常不鼓勵。始終使用所有導入的絕對包路徑。「_這裏,從package.module導入測試。 – spectras