pychrm无法导入我自己的包,但是终端可以

时间:2019-05-10 04:33:41

标签: python import pycharm

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

================================================ =========================
我在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'
>>> 

1 个答案:

答案 0 :(得分:0)

如果您在/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` 

所以您获得正确的路径


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

如果您要转到其他文件夹,那么它将找不到本地pyutils_gph/utils.py,并且会出现相同的错误。