不同路徑下導入自己的文件
一、錯誤示范
在測試項目內。目錄結構如下:

在這里,假設我們想在utils/app_loadimg中使用test/test_import.py中的pass_test變量
測試代碼如下:
# test/test_import.py代碼
pass_test = "測試成功"
# utils/app_loadimg.py的代碼
from Img2Web.test.test_import import pass_test
print(pass_test)
在pycharm中導入是正常的,輸出結果為:
測試成功
在CMD中、app_loadimg.py所在目錄下執行文件:
Traceback (most recent call last):
File "app_loadimg.py", line 8, in <module>
from Img2Web.test.test_import import pass_test
ModuleNotFoundError: No module named 'Img2Web'
在CMD中、app_loadimg.py父目錄下執行文件:
Traceback (most recent call last):
File "app_loadimg.py", line 8, in <module>
from Img2Web.test.test_import import pass_test
ModuleNotFoundError: No module named 'Img2Web'
備注
不難發現,在這些腳本中運行文件就報錯了,這種導入方式肯定會有問題
二、正確的姿勢
import os
import sys
sys.path.append(os.path.abspath(__file__).split("Img2Web")[0])
from Img2Web.test.test_import import pass_test
使用sys.path.append()將Img2Web的目錄添加到環境變量里,就可以在任意地址執行了。需要注意的是sys.path.append()必須先執行,但是在pycharm里會顯示PEP8格式有問題,這里沒有辦法只能取舍了!
