我有以下目錄結構:從父目錄導入文件?
application
tests
main.py
main.py
應用/ main.py包含了一些功能。
tests/main.py將包含我對這些函數的測試,但我無法導入頂層main.py。我得到以下錯誤:
ImportError: Import by filename is not supported.
我嘗試使用下面的語法來導入:
import main
我在做什麼錯?
我有以下目錄結構:從父目錄導入文件?
application
tests
main.py
main.py
應用/ main.py包含了一些功能。
tests/main.py將包含我對這些函數的測試,但我無法導入頂層main.py。我得到以下錯誤:
ImportError: Import by filename is not supported.
我嘗試使用下面的語法來導入:
import main
我在做什麼錯?
您必須在應用程序目錄添加到您的路徑:
import sys
sys.path.append("/path/to/dir")
from app import object
或者從外殼:
setenv PATH $PATH:"path/to/dir"
如果您使用Windows: 添加變量在windows路徑。
或者在命令行:
set PATH=%PATH%;C:\path\to\dir
所有你需要讓你的目錄到包,加入__init__.py
文件首先:
application
tests
__init__.py
main.py
__init__.py
main.py
那麼你應該確保上述應用程序的目錄在sys.path
。有很多方法可以做到這一點,如提出申請infto包並安裝它,或者只是在正確的文件夾等執行的東西
添加'__init__。你可以將你的目錄變成包而不是模塊。 – raben
如果你想你的腳本更便攜,考慮自動找到父目錄:
import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# import ../db.py
import db
in python。存在相同的目錄,。對於父目錄 來導入您可以使用父目錄中的文件..
from .. import filename (without .py extension)
這對我不起作用,'ValueError:試圖在非包中進行相對導入 – nobism
我第一次閱讀文檔:http://docs.python.org/2/tutorial /modules.html#packages – Blender
那麼你不能導入你正在處理的文件名。 – squiguy
你在做哪個文件'import main'? – Aivar