首页 > 解决方案 > pychrm 不能导入自己的包,但是终端可以

问题描述

问题解决了。
如果将路径添加到 PYTHONPATH,则可以在该路径中导入包。但是我正在做的是尝试导入该路径,这是错误的。
所以在这种情况下,我在我的路径上创建了一个子目录,该目录现在是一个可以导入的包。
我仍然必须将我的路径包含在文件>设置>项目结构中作为源。

==================================================== ========================
我在anaconda,Ubuntu16.04中使用python3.6。
我在路径 /home/gph/pyutils_gph 中有自己的包。
这个目录里面是 utils.py 文件。我已在 PYTHONPATH 中包含此路径。
我可以

Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyutils_gph import utils
>>> 

在终端。但是相同的导入代码在 pycharm 中显示错误。它可以找到我的包裹,用红线表示。
我还应该怎么做才能让 pycharm 知道我自己的包?

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

我在 pycharm 中打开了终端,得到如下输出。我在 PYTHONPATH 中有那个目录,但我无法导入它。怎么了?

Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/gph/pyutils_gph', '/home/gph/Desktop/BorderSecure/detection_cnn/src', '/home/gph/anaconda3/envs/py36_torch0.4/lib/python36.zip', '/home/gph/anaconda3/envs/py36_torch0.4/lib/python3.6', '/home/gph/anaconda3/envs/py36_torch0.4/lib/python3.6/lib-dynload', '/home/gph/anaconda3/envs/py36_torch0.4/lib/python3.6/site-packages']
>>> from pyutils_gph import utils
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pyutils_gph'
>>> 

标签: pythonimportpycharm

解决方案


如果你有/home/gph/pyutils_gph并且PYTHONPATH 你做到了,from pyutils_gph import utils那么它正在寻找

"/home/gph/pyutils_gph/" + "pyutils_gph/utils.py` 

因为from pyutils_gph import utils意味着pyutils_gph/utils.py并将其添加到从PYTHONPATH


你必须添加到PYTHONPATH

/home/gph

然后它会给

"/home/gph/" + "pyutils_gph/utils.py` 

所以你得到正确的路径


如果您在文件夹中运行 Anaconda,则第一个版本可以在终端中运行,/home/gph因为Python搜索包也在当前工作目录中,因此它pyutils_gph/utils.py直接在/home/gph不使用的情况下找到PYTHONPATH

如果您将转到不同的文件夹,则它不会在本地找到pyutils_gph/utils.py并且您会收到相同的错误。


推荐阅读