gpt4 book ai didi

configuration - 为什么 PyCharm 总是将 "contents root"添加到我的 PYTHONPATH,以及什么 PYTHONPATH?

转载 作者:行者123 更新时间:2023-12-03 23:33:55 30 4
gpt4 key购买 nike

我对 PyCharm 如何确定 Python 用于定位模块和包的路径感到困惑。

首先,当我取消选中设置时(在“Python 控制台”和我的运行配置中),我仍然在 sys.path 开头看到我的项目目录.

例如,我在“路径问题”和“运行”中有一个项目,其中包含一个文件

import sys
for p in sys.path:
print p

我明白了
/Users/Rax/Documents/Projects/pathproblem
... (other things in my PYTHONPATH)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC
/Library/Python/2.7/site-packages

即使我要求从路径中排除“内容根”:

enter image description here

这可能导致成功导入在典型部署中无法导入的模块(例如,在构建包时)。

如果我检查设置,我会得到两次:
/Users/Rax/Documents/Projects/pathproblem
... (other things in my PYTHONPATH)
/Users/Rax/Documents/Projects/pathproblem
...

似乎 PyCharm 总是在 PYTHONPATH 的开头(它认为是)添加当前项目根目录,并且这个设置只是在最后再次添加它。

(1) 如何配置 PyCharm 以使其(真的)不将项目目录添加到包搜索路径中?

此外,据我所知,对于 PyCharm,PYTHONPATH 根本不是我的系统 PYTHONPATH,而是“用户添加”的条目——事实上,令人困惑的是,在 Python 解释器的路径设置的末尾。

(2)PyCharm的PYTHONPATH从何而来?这不是我在系统其他任何地方看到的 PYTHONPATH。

FWIW,PyCharm 的 Sphinx 尊重“内容根”设置,仅在构建配置中检查路径时添加内容根。

最佳答案

First of all, when I uncheck the settings (in both the "Python Console" and my Run Configuration), I still see the directory for my project at the start of sys.path.



应该是因为 PyCharm 默认将项目根添加到 Path 中。

(1) How do I configure PyCharm so that it (really) doesn't add the project directory to the package search path?



据我所知,你不能。但是,您可以执行一些不将文件添加到内容路由的操作。但是,在向您展示如何执行此操作之前,让我解释一下为什么它将目录的当前根添加到其路径中。当您打开 python 控制台时:

enter image description here

现在,我有一个名为 foo.py 的文件, 在那个文件中我有一个函数叫做 bar ,所以我可以轻松地将函数导入我的控制台:

enter image description here

如上图所示,PyCharm 会自动添加您当前的根目录。这应该不足为奇,因为当您 cd进入一个目录,然后运行类似 python foo.py ,您正在隐式地将当前根添加到您的路径中。为了在 python 控制台中模拟这一点,PyCharm 添加了当前根。

为避免这种情况,您可以简单地在当前根目录中创建一个文件夹并将其标记为源根目录:

enter image description here

而且由于您的 Source 根不会添加到路径中,因此您可以高枕无忧:

enter image description here

(2) Where does PyCharm's PYTHONPATH come from? It's not the PYTHONPATH I see anywhere else on my system.



它来自您的解释器设置:

enter image description here

一般情况下, PYTHONPATH本质上是包含标准库文件以及第三方库文件的所有目录的集合。

关于configuration - 为什么 PyCharm 总是将 "contents root"添加到我的 PYTHONPATH,以及什么 PYTHONPATH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199382/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com