为什么模块导入实际上不存在?

时间:2019-08-21 17:09:27

标签: python

我的项目结构如下:

my-project:
   dialog
     utils
       path.py

在通过“ pip install。”安装后,在PyCharm中,我可以成功导入两个中的一个:

from dialog.utils import path
import dialog.utils

然后我可以参考以下内容:

 path.module_path() // OR
 dialog.utils.module_path()

它没有任何问题。我也可以在iPython的终端中执行此操作。但是,当我通过终端运行python时:

python3 run_dialog

run_dialog.py如上所示导入“路径”,它总是报告此问题:

Traceback (most recent call last):
  File "run_dialog.py", line 15, in <module>
    import dialog.utils
ModuleNotFoundError: No module named 'dialog.utils'

所以基本上,我可以在PyCharm和iPython终端中运行此代码,但不能在具有“ python3 run_dialog”的项目中运行。

那是为什么?

2 个答案:

答案 0 :(得分:0)

尝试

import sys
sys.path.append('my/path/to/myModule/dir')
import myModule

Python解释器需要知道指向导入模块的路径。

但是,更好的方法是将PYTHONPATH设置为这样的项目目录

set PYTHONPATH=my/path/to/project

答案 1 :(得分:0)

以我的拙见,Pythonic解决方案是使用"editable" install在激活的虚拟环境中安装软件包。

  

“可编辑”安装基本上是“setuptools develop mode”安装。

  • 使用pip install -e <path> option进行editable install

    (venv) $ pip install -e path/to/myproject  # wherever myproject/setup.py is located
    
  • 您可以使用pip list确认您的软件包已作为可编辑软件包安装到virtualenv中,其中 ie 列出了软件包的路径

    $ pip list
    myproject                0.1        path/to/myproject
    pip                      19.1.1
    setuptools               41.0.1
    
  • 保存到软件包中的更改在您每次重新启动解释器并重新加载/导入软件包时生效,从而使您可以“编辑”或“开发”软件包