簡體   English   中英

Python無法從命令行找到模塊,但可以從Eclipse運行

[英]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.pathdatabase目錄不應位於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM