python - “将目录标记为源根目录”到底有什么作用?
问题描述
在 Pycharm 中,如果你在你的项目中右键单击一个文件夹,你可以将它标记为sources root
,这样你就可以从这个文件夹和子文件夹中导入模块。
然而这样做只会让你的程序在 Pycharm 中运行,如果我尝试从 Pycharm 外部执行(例如从控制台),它会抱怨找不到某些模块,这是我面临的问题。
如果我将某个文件夹标记为源根目录,我的程序运行良好,但我需要了解它的作用,以便即使不使用 Pycharm,我也可以配置程序以查找此模块。
我想知道这个选项究竟做了什么,以及如何在不使用它的情况下获得相同的行为。
它只是__init__.py
在根文件夹中添加一个文件?它是否在做类似的事情:
import sys
sys.path.insert(0, my_folder)
解决方案
首先__init__.py
将目录标记为常规包目录(这是 3.3 之前的版本,在 3.3+ 中不再需要)。有了这个,python 将在该目录中查找子模块以进行导入。
“将目录标记为源根目录”为环境设置 PATH(或 PYTHONPATH)。在 shell 中,它会像,
export PYTHONPATH="${PYTHONPATH}:/your/source/root"
PYTHONPATH
保存模块文件的默认搜索路径。这将使解释器能够搜索附加路径中的模块。默认值取决于安装(通常它包含 Python 二进制文件的路径)。
您还可以sys.path
在 python 文件中使用此搜索路径。
推荐阅读
- c# - 如何在每台计算机上使用访问表文件?
- notifications - Flutter:如何仅当我们使用 local_notification 点击通知时才执行操作?
- javascript - 把双引号换成单引号?
- angularjs - 使用复选框编辑表中的单个或所有选定用户 - AngularJS
- javascript - 在javascript中为表格保留空间
- c# - @Html.DropDownListFor 的数据绑定异常
- java - 没有 3rd 方库的 Java 屏幕抓取
- javascript - 与 Javascript for Visual Studio 2017 相关的语法高亮颜色设置列表
- intellij-idea - IntelliJ 工件构建未从终端运行
- css - FontAwesome 为什么图标以 SVG 格式呈现?