簡體   English   中英

Pycharm 無法從父文件夾名稱導入模塊

[英]Pycharm cannot import module from Parent folder name

我有以下方式定義的項目:

project/
  __init__.py
  dog.py
  cat.py

在我的 dog.py 中,我正在調用:

import project.cat

這給了我這個錯誤:

ModuleNotFoundError: No module named 'project'

但是,我已經將 PYTHONPATH 設置為項目目錄的父目錄,如果我在 Pycharm 之外運行 dog.py(例如在命令行上),它可以正常工作,沒有例外。

現在,即使我將項目文件夾添加為 Source Root,Pycharm 仍然將我的導入語句標記為錯誤(紅色),並且也不允許我在 dog.py 程序的 Pycharm 中運行它。 這太令人困惑了。 任何人都可以幫忙嗎?

*PS:我不想在 dog.py 中使用相對導入,例如“from.cat import *”,因為我在 dog.py 中有 if name == main語句,python 不允許我運行相對導入在 dog.py 里面。

================

添加更多信息:

我注意到我是否在項目下創建了 src 文件夾以使結構如下:

project/
  __init__.py
  src/
    __init__.py
    dog.py
    cat.py

然后我可以在 dog.py 中調用它:

import src.cat

但是這樣一來,我還是很困擾自己,因為當我在 Pycharm 中運行程序時,我必須使用這種方式:

import src.cat

當我在 ipython notebook 中運行程序時,我必須像這樣導入:

import project.src.cat

這導致當我必須在不同的地方運行時,我會不斷地切換我的代碼。

======================

如果我只是在 dog.py 中這樣做

import cat

它將在 Pycharm 中工作。 但是當我在命令行中調用時,現在那里出錯了:

In [10]: import project.dog                                                 
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-10-be5ebc05b4b0> in <module>
----> 1 import project.dog  

~/PycharmProjects/project/dog.py in <module>
      2 import pandas as pd
      3 import numpy as np
----> 4 import cat
      5 from datetime import datetime
      6 

ModuleNotFoundError: No module named 'cat'

通過將我的項目的父文件夾設為根文件夾並將根設為源根來解決問題。

parent-folder\
  project\
    __init__.py
    dog.py
    cat.py

現在它在命令行和 Pycharm 上都可以很好地工作,只需在.bashrc 中添加一行:

export PYTHONPATH=$PYTHONPATH:~/project

暫無
暫無

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

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