[英]Python cannot find module from command line but works from eclipse
我是Python的新手,並且遇到奇怪的錯誤。 我正在使用Eclipse / PyDev進行開發,並在Eclipse和命令行中使用了Python 2.7.3。 我創建了幾個模塊,每個文件夾都有init .py文件和其他源文件。 當我嘗試從Eclipse用__name__ == '__main__'
執行文件時,它工作正常,但是從命令行調用時就像
python models.py
Traceback (most recent call last):
File "models.py", line 8, in <module>
from database import uuid_generator
ImportError: No module named database
看起來像 有人可以告訴我什么可能是問題嗎?
database
父目錄不在sys.path
(pythonpath)中。 嘗試在父(頂級)目錄中以python -mdatabase.uuid_generator
身份運行腳本。 或創建包裝器腳本:
from database.uuid_generator import main
main()
並將其放在database
的父(頂層)目錄中。 當您調用此腳本時,其目錄會自動添加到sys.path
因此無需修改database
目錄或PYTHONPATH
環境變量中的模塊,一切都可以正常工作。
只有其中沒有__init__.py
的頂級目錄(不是Python包)才需要位於sys.path
即database
目錄不應位於sys.path
。
請參閱陷阱以防不慎 。
嘗試改用這個
from uuid_generator
編輯:確保uuid_generator.py與models.py位於同一文件夾中
顯然eclipse已將數據庫目錄添加到模塊搜索路徑。
要獲得相同的效果而無需修改腳本,可以將數據庫的路徑附加到$ PYTHONPATH環境變量中。
如果您願意修改腳本,可以在導入相關模塊sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
之后將其添加到頂部。
未經測試的黑客
請參閱下面的JFSebastian的答案和評論
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.