oro*_*ome 13 configuration path python-import pycharm
我对PyCharm如何确定Python用于定位模块和包的路径感到困惑.
首先,当我取消选中设置时(在"Python控制台"和我的运行配置中),我仍然会在开始时看到我的项目的目录sys.path
.
例如,我在"路径问题"和"运行"包含的文件中有项目
import sys
for p in sys.path:
print p
Run Code Online (Sandbox Code Playgroud)
我明白了
/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
Run Code Online (Sandbox Code Playgroud)
即使我已经要求将"内容根"排除在路径之外:
这可以导致成功导入在典型部署中无法导入的模块(例如,在构建包时).
如果我检查设置,我得到它两次:
/Users/Rax/Documents/Projects/pathproblem
... (other things in my PYTHONPATH)
/Users/Rax/Documents/Projects/pathproblem
...
Run Code Online (Sandbox Code Playgroud)
似乎PyCharm 总是在PYTHONPATH的开头(它认为是)PYTHONPATH添加当前的项目根,并且这个设置最后再添加它.
(1)如何配置PyCharm以便它(实际上)不将项目目录添加到包搜索路径?
另外,就我所知,PYTHONPATH,对于PyCharm来说,根本不是我的系统PYTHONPATH,而是"用户添加"条目 - 实际上,令人困惑的是,在Python解释器的Path设置的末尾.
(2)PyCharm的PYTHONPATH来自哪里?这不是我在系统中其他地方看到的PYTHONPATH.
FWIW,PyCharm的Sphinx尊重"内容根"设置,仅在构建配置中检查路径时添加内容根.
Gam*_*iac 14
首先,当我取消选中设置时(在"Python控制台"和我的运行配置中),我仍然在sys.path的开头看到我的项目的目录.
这应该是因为PyCharm默认将项目路由添加到Path.
(1)如何配置PyCharm以便它(实际上)不将项目目录添加到包搜索路径?
据我所知,你做不到.但是,您可以执行不将文件添加到内容路由的操作.但是,在向您展示如何执行此操作之前,请让我解释为什么它将目录的当前根添加到其路径中.当你打开python控制台时:
现在,我有一个名为的文件foo.py
,在该文件中我有一个名为的函数bar
,所以我可以轻松地将该函数导入我的控制台:
如上图所示,PyCharm会自动添加您当前的根目录.这应该不足为奇,因为当你cd
进入一个目录并运行类似的东西时python foo.py
,你隐含地将当前的根添加到你的路径中.为了在python控制台中模拟它,PyCharm添加了当前的根.
为避免这种情况,您可以在当前根目录中简单地创建一个文件夹,并将其标记为源根目录:
由于您的Source根目录不会添加到路径中,因此您可以轻松休息:
(2)PyCharm的PYTHONPATH来自哪里?这不是我在系统中其他地方看到的PYTHONPATH.
它来自您的翻译设置:
通常,PYTHONPATH
它实际上是包含标准库文件的所有目录的集合,也是第三方库文件的集合.
在本例中,“projects/pathproblem”是由 Python 本身而不是 PyCharm 添加到 sys.path 中的。请参阅http://docs.python.org/2/library/sys.html#sys.path:“在程序启动时初始化,此列表的第一项 path[0] 是包含脚本的目录用于调用 Python 解释器。”
为了回答你的第二个问题,PyCharm 通过使用脚本运行选定的 Python 解释器来打印 sys.path 的内容,记录其结果,然后根据项目设置(Django、App Engine 等)添加必要的更改来构建 PYTHONPATH