【发布时间】: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