python - 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'
>>>
解决方案
如果你有/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
并且您会收到相同的错误。
推荐阅读
- jpa - weblogic 10.3.5 上的 Spring 4 + 休眠和 jpa 2.1
- typescript - 地图
打字稿中的飞镖等价物? - django - Django Action Stream 错误 No Module named 'actstreamdjango'
- ios - Xcode 10,带有 CoreNFC 的 Swift 4 应用程序在 iOS 12 上崩溃
- c# - Unity滚动条不能跨级别工作
- r - 如何调整绘图大小以便在 R Markdown 中使用?
- apache - 用于基本 URL 的 htaccess RewriteRule
- json - 来自 jq 尝试使用变量修改 JSON 的“无效数字文字”错误
- java - 如何等待反射线程完成
- javascript - 使用 react-router v4 添加或更新查询参数,无需重新渲染主要组件