【问题标题】:Importing modules working in PyCharm, but not from terminal [duplicate]导入在 PyCharm 中工作的模块,但不是从终端 [重复]
【发布时间】:2021-07-11 09:57:51
【问题描述】:

我在导入模块时遇到了一些问题。

项目结构类似于:

xpr01
---- xpr02
     ---- __init__.py
     ---- folder01
          ---- app_helpers.py
          ---- data_manipulation.py

     ---- folder02
          ---- main.py

为了运行 main.py(在文件夹 02 中),我需要在文件夹 01 中包含的模块中定义一些函数。

所以,在使用 PyCharm 时,我将 xpr01 设置为工作目录,而在 main.py 中我正在使用:

from xpr02.folder01.data_manipulation import get_policies, get_categories, get_country_data
from xpr02.folder01.data_manipulation import get_plan_df, get_all_plans_df

一切正常。 但是,当我尝试从终端(Ubuntu 18.04)运行它时,出现错误:

ModuleNotFoundError: No module named 'xpr02'

我认为问题是我应该做...与在 PyCharm 中指定工作目录具有相同效果的事情。我以为 xpr02 下的 init.py 会做到这一点,但显然我错了。


编辑

PyCharm 正在执行命令:

/home/my_home_folder/anaconda3/envs/myenv/bin/python /home/my_home_folder/projects/xpr01/xpr02/folder02/main.py

当我只是在跑步时:

python main.py

从文件夹 02 中。 我尝试运行与 PyCharm 中相同的命令(使用所有绝对路径),但仍然遇到相同的错误。

【问题讨论】:

  • 能否把PyCharm在终端上执行的命令和你在终端里写的命令发一下?
  • 看起来像 path 问题
  • 我更新了问题以回复electromeow。 Ceres,我想是这样的,但正如我所写的那样,我期望在 folder02 中有 init.py 会修复它
  • 这能回答你的问题吗? How to import other Python files?
  • @Carlo 见The Module Search Path 无论您从哪个目录执行,都会自动放在sys.path 上。这就是为什么在包正下方的路径上执行允许导入它的原因。要使软件包可用,请将其安装到 venv,然后如果您激活了 venv,您就可以从任何地方执行。

标签: python pycharm python-import


【解决方案1】:

尝试使用

sys.path.append(path_to_folder_containing_python_code)

【讨论】:

    【解决方案2】:

    如果您在创建文件夹时将 xpr02 创建为 python 模块或包 pycharm 设置 PYTHONPATH。

    早上写的太早了,所以确切的路径可能是错误的,但是尝试将 PYTHONPATH 设置为 /home/my_home_folder/projects。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      相关资源
      最近更新 更多