我有一个目录结构
├── simulate.py
├── src
│ ├── networkAlgorithm.py
│ ├── ...
我可以使用sys.path.insert()访问网络模块。
import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *
但是,pycharm抱怨它无法访问该模块。我如何教pycham解决引用?
我有一个目录结构
├── simulate.py
├── src
│ ├── networkAlgorithm.py
│ ├── ...
我可以使用sys.path.insert()访问网络模块。
import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *
但是,pycharm抱怨它无法访问该模块。我如何教pycham解决引用?
当前回答
虽然所有的答案都很有帮助,但有一小部分信息应该明确解释:
本质上,具有多个层次目录的项目作为具有某些属性的包工作。 要导入自定义本地创建的类,我们需要导航到包含.py文件的目录,并在那里创建一个__init__.py(空)文件。
这之所以有用,是因为需要这个文件才能使Python将该目录视为包含包的目录。干杯!
其他回答
在SRC文件夹中检查__init__.py文件 添加SRC文件夹作为源根目录 然后确保将源代码添加到PYTHONPATH(参见上面) 在PyCharm菜单中选择:File——> Invalidate Caches——> Restart
手动添加它确实是一种方法,但是有一种更简单的方法,那就是简单地告诉pycharm您想要添加src文件夹作为源根,然后将源根添加到您的python路径。
这样,你就不必在解释器的设置中硬编码:
添加src作为源内容根:
然后确保在PYTHONPATH下面添加add sources: 首选项~构建、执行、部署~控制台~ Python控制台
现在进口问题将得到解决:
通过这种方式,您可以添加任何您想要的源根,并且事情将简单地工作。但是,如果你没有将它标记为源根,你会得到一个错误:
完成所有这些后,不要忘记重新启动。在PyCharm菜单中选择:File——> Invalidate Caches / Restart
如果在Python文件名中使用破折号,也会出现此问题,因此强烈不建议这样做。
Pycharm使用venv。在venv的控制台中,您应该显式地安装包或进入设置->项目解释器->添加解释器->继承全局站点包。
请检查您是否使用了正确的解释器。我得到错误“未解决的引用'django'”来解决这个问题,我从项目设置中更改了项目解释器(更改Python 3到Python 2.7): 选择项目,进入文件->设置->项目:->项目解释器->眉毛并选择正确的版本或解释器(例如/usr/bin/python2.7)。