我的项目结构如下:
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”的项目中运行。
那是为什么?
答案 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
保存到软件包中的更改在您每次重新启动解释器并重新加载/导入软件包时生效,从而使您可以“编辑”或“开发”软件包