我有一个目录结构
├── simulate.py ├── src │ ├── networkAlgorithm.py │ ├── ...
并且我可以使用sys.path.insert()访问网络模块。
sys.path.insert()
import sys import os.path sys.path.insert(0, "./src") from networkAlgorithm import *
但是,pycharm抱怨它无法访问该模块。我如何教pycham解决引用?
通常,$PYTHONPATH用于教python解释器找到必要的模块。PyCharm需要在Preference中添加路径。
手动添加它,就像你做是那样,确实是一种方法,但有一个更简单的方法,那就是简单地告诉pycharm,你想添加src文件夹作为源根,然后将源根添加到你的python路径中。
src
这样,你就不必在解释器的设置中硬编码:
PYTHONPATH
Preferences ~ Build, Execution, Deployment ~ Console ~ Python Console
通过这种方式,您可以添加任何您想要的源根,并且事情将简单地工作。但是,如果你未将它标记为源根,你将会得到一个错误:
完成所有这些后,不要忘记重新启动。在PyCharm菜单中选择:文件>使缓存失效/重新启动
很多时候发生的事情是插件没有安装。如。
请检查您是否使用了正确的解释器。我得到错误“未解决的引用'django'”来解决这个问题,我从项目设置中更改了项目解释器(更改Python 3到Python 2.7): 选择项目,进入文件->设置->项目:->项目解释器->眉毛并选择正确的版本或解释器(例如/usr/bin/python2.7)
在测试完所有的变通方法后,我建议你看一下Settings -> Project -> project dependencies并重新排列它们。
Settings -> Project -> project dependencies
__init__.py
一般来说,这是一个缺少包的问题,只需在未解决的引用处放置插入号,并按Alt+Enter显示选项,然后你应该知道如何解决它。
Alt+Enter
如果有人还在看这个问题,当我尝试它时,接受的答案仍然适用于PyCharm 2016.3。UI可能已经更改,但选项仍然相同。
ie。右键单击根文件夹——>“标记目录为”——>源根
Pycharm使用venv。在venv的控制台中,你应该显式地安装包或进入settings -> project interpreter -> add interpreter -> inherit global site-packages。
settings -> project interpreter -> add interpreter -> inherit global site-packages
通过PyCharm安装(适用于社区版)。打开Settings > Project > Project Interpreter,然后点击下面截图中的绿色+图标。在打开的第二个对话框中,输入软件包名称并单击“Install package”按钮。
Settings > Project > Project Interpreter
在遵循公认的答案后,做以下的事情为我解决了这个问题:
__abc0→__abc1→__abc2→__abc3
选择未解决导入的文件所在的目录/项目,并选中复选框,告诉Pycharm该项目依赖于您的其他项目。
我的文件夹层次结构与问题中的略有不同。我的是这样的
├── MyDirectory │ └── simulate.py ├── src │ ├── networkAlgorithm.py │ ├── ...
告诉Pycharm src依赖于MyDirectory解决了我的问题!
MyDirectory
在我的情况下,问题是我使用的Virtual environment没有访问全局站点包。因此,解释器不知道新安装的包。
Virtual environment
要解决这个问题,只需编辑或重新创建虚拟解释器,并勾选Inherit global site-packages选项。
Inherit global site-packages
这对我有用:Top Menu -> File -> Invalidate Caches/Restart
Top Menu -> File -> Invalidate Caches/Restart
在新版本的pycharm中,只需右键单击想要导入文件的目录或python包,然后单击“标记目录为”->“源根”
最简单的解决方法是在pyCharm软件中执行以下操作:
点击:File > Settings > (Project: your Project name) > Project Interpreter >
然后点击右边的“+”图标,搜索你想要的软件包并安装它。
享受编码吧!!
虽然所有的答案都很有帮助,但有一小部分信息应该明确解释:
.py
这之所以有用,是因为需要这个文件才能使Python将该目录视为包含包的目录。干杯!
完成在PyCharm 2019.3.1 右键单击src文件夹->“标记目录为”->单击“排除”,您的src文件夹应该是蓝色的。
venv
这里所有的东西我都试过两次,甚至更多。我最终解决了这个问题,做了一些我在网上从未见过的事情。如果你去Settings>Editor>File Types,在底部有一个'Ignore Files and folders'行。在我的情况下,我忽略了'venv',这是我总是命名我的虚拟环境。所以我从要忽略的目录列表中删除了venv;,瞧!!我终于解决了这个问题。实际上,我在这个项目中遇到的所有导入问题都得到了解决。
Settings>Editor>File Types
'Ignore Files and folders
'venv'
venv;
顺便说一句,我使用PyCharm安装了每个包,而不是通过终端安装的。(意思是,通过去Settings>Interpreter...)。我已经使缓存无效,更改“源根”,重新启动PyCharm,刷新我的解释器路径,更改解释器,删除我的venv…我什么都试过了。这终于奏效了。显然,不同的人会有不同的问题,所以这个方法可能对你不起作用,但如果其他方法都不起作用,这绝对值得一试,如果不起作用,也很容易逆转。
Settings>Interpreter...
你的问题会解决的
我也使用了像上面Dan那样的虚拟环境,但是我能够在现有的环境中添加一个解释器,因此不需要继承全局站点包,从而撤销虚拟环境试图实现的目标。
对于我来说:
Directory0 ├── Directory1 │ └── file1.py ├── Directory2 │ ├── file2.py
在file1中,我有:
from Directory2 import file2
上面有一个“未解决的参考目录”。
我是这样解决的:
和
这很愚蠢,但如果我不执行第二个操作,错误仍然会出现,并可能使您认为您没有通过将父目录标记为Source Root来解决问题。
为什么会发生这种情况有几个原因。以下是修复大多数此类情况的几个步骤:
.idea缓存问题
一些.idea问题导致IDE显示错误,而代码仍然正确运行。解决方案:
.idea
导入相对于项目文件夹
相对导入,而代码根文件夹与项目文件夹不相同。解决方案:
编辑器没有标记init.py作为Python,但作为文本
这是所有案例中最令人难以置信的。在这里,出于某种原因,PyCharm认为所有__init__.py文件都不是python文件,因此在代码分析时忽略了它们。要解决这个问题:
或
我也有同样的问题,也尝试了很多建议,但没有一个有效,直到我发现这篇文章(https://stackoverflow.com/a/62632870/16863617)。尽管他的解决方案对我不起作用,但它帮助我想出了将_ < em > init.py < / em >_添加到——>|编辑器|文件类型| Python |注册模式
截图 .
未解决的引用错误现在已经解决。
我克隆的项目有一个名为modules的目录,并成功地在import this as that的代码中使用了那里的文件,但Pycharm无法跳转到那些代码片段,因为它不能识别导入。
modules
import this as that
标记模块文件夹在下面的设置部分作为source解决了这个问题。
source
只是注意如果你有python解释器不安装的问题 包,只需更改文件夹PycharmProjects的权限 C: \用户'username \ PycharmProjects 每一个人 < / p >
如果在Python文件名中使用破折号,也会出现此问题,因此强烈不建议这样做。
在我的例子中,使用Pycharm 2019.3,问题是我忘记向我想导入的文件添加扩展名“.py”。一旦添加,错误就会消失,而不需要使缓存无效或任何其他步骤。