簡體   English   中英

導入模塊在 PyCharm 中工作,但在終端 python 3.7 中出錯

[英]Import module works in PyCharm but giving error in terminal python 3.7

我有一個項目,我根據它的使用情況創建了多個 python 文件。 當我從 pycharm 運行時,它完全正常。 但是,當我從終端運行相同的程序時,出現錯誤:ModuleNotFoundError: No module named 'dataflow'

我需要從中制作數據流並需要進行部署,但這樣做時出現錯誤。

項目的文件夾結構,這在我從 PyCharm 運行時有效

在此處輸入圖片說明

從終端運行時出錯

在此處輸入圖片說明

添加猜測,是否也在 venv 中運行 pychar 您的代碼? 如果沒有,您可以檢查是否安裝了 venv 中缺少的軟件包。

更新

如果您打算擁有一個要導入並使用其中的模塊的數據流包,則您的數據流文件夾中需要一個 __init__.py 文件。 這使它成為python的一個包。 如果要將數據流中的模塊與 . 在導入中,您需要在 __init__.py 中進行導入

像這樣

import .driver_main

這使得來自 driver_main 的東西在數據流中可用,但更好的做法是指定您想從 driver_main 訪問的內容,例如

from .driver_main import MyDriver

這將使您可以通過以下方式訪問我的驅動程序

dataflow.MyDriver

如果您真的只想訪問同一 lvl 上的一個模塊中的內容,您應該能夠使用相同的方法來實現。 所以在你的例子中你在圖片中顯示嘗試改變

from dataflow import driver_main

   from . import driver_main

這將適用於與 driver_main.py 相同 lvl 的模塊中的導入,如 app.py

更新原始帖子中的評論

順便說一句,pychar 中的 env 與控制台中的 venv 無關。 您只需告訴 pycharm 使用 python 3.7,但使用 venv 將二進制文件復制到文件夾結構中。 也就是說,如果你運行一個虛擬環境,你在那里 pip 的所有東西都會被復制到這個文件夾結構中,而不是在全局站點包中。 這意味着如果你安裝了全局的東西,你不會馬上在虛擬環境中擁有它,反之亦然!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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