PyCharm如何以及为何改变Python的导入逻辑?

12 投票
1 回答
9784 浏览
提问于 2025-04-16 16:27

我在Windows上使用的是PyCharm 1.2.1。我需要编辑同一个项目的不同分支,这些分支有点复杂,因为它们存放在不同的文件夹里,比如说在 c:\apps\alphac:\apps\beta。对于每个这样的文件夹,PYTHONPATH变量需要调整,以指向项目根文件夹里适当的库,这些库可能在 c:\alpha\vendor 之类的地方。我通过从命令行批处理文件启动PyCharm来解决这个问题,这个批处理文件在启动PyCharm之前设置了必要的PYTHONPATH变量(所以我在 alphabeta 目录里都有 PyCharm.cmd)。

问题是:当我打开PyCharm来编辑 beta 文件夹时,import 语句居然alpha 文件夹导入模块!当我从命令行启动 python.exe 解释器时,一切都正常 - 这个问题似乎只在PyCharm里出现

第二个奇怪的发现是:在PyCharm和外部的python.exe解释器中执行 print sys.path 的结果不同 - 在PyCharm中,它没有显示我的PYTHONPATH模块。我是Python和PyCharm的新手,但这种行为看起来非常奇怪且不一致。

最后,我在PyCharm IDE中找到了一些设置,似乎可以帮助我解决这个问题 - 文件 -> 设置 -> Python解释器。在这里,我找到了 alphabeta 文件夹的所有路径。没有办法清除这个路径列表,只能禁用一些元素。但即使禁用也有点傻 - 每次我编辑 alphabeta “解决方案文件夹”时,都必须单独禁用/重新启用它们。

所以最后的问题是:如何在PyCharm中编辑不同的项目(文件夹),并强制PyCharm不从错误的位置导入模块?

1 个回答

13

正确的做法不是试图绕过PyCharm的逻辑,而是按照它的设计来使用这个开发工具。也就是说:

  • 不要用任何.cmd脚本来启动PyCharm
  • 如果在设置中的“Python解释器”里有“alpha”和“beta”相关的路径,记得把它们都删掉
  • 分别将“alpha/vendor”和“beta/vendor”文件夹标记为alpha和beta项目的源代码根目录。

这样一来,PyCharm就能正确处理导入的内容,并在你从它运行应用时自动生成正确的PYTHONPATH。

撰写回答