PyCharm如何以及为何改变Python的导入逻辑?
我在Windows上使用的是PyCharm 1.2.1。我需要编辑同一个项目的不同分支,这些分支有点复杂,因为它们存放在不同的文件夹里,比如说在 c:\apps\alpha
和 c:\apps\beta
。对于每个这样的文件夹,PYTHONPATH变量需要调整,以指向项目根文件夹里适当的库,这些库可能在 c:\alpha\vendor
之类的地方。我通过从命令行批处理文件启动PyCharm来解决这个问题,这个批处理文件在启动PyCharm之前设置了必要的PYTHONPATH变量(所以我在 alpha
和 beta
目录里都有 PyCharm.cmd
)。
问题是:当我打开PyCharm来编辑 beta
文件夹时,import
语句居然从 alpha
文件夹导入模块!当我从命令行启动 python.exe
解释器时,一切都正常 - 这个问题似乎只在PyCharm里出现。
第二个奇怪的发现是:在PyCharm和外部的python.exe解释器中执行 print sys.path
的结果不同 - 在PyCharm中,它没有显示我的PYTHONPATH模块。我是Python和PyCharm的新手,但这种行为看起来非常奇怪且不一致。
最后,我在PyCharm IDE中找到了一些设置,似乎可以帮助我解决这个问题 - 文件 -> 设置 -> Python解释器
。在这里,我找到了 alpha
和 beta
文件夹的所有路径。没有办法清除这个路径列表,只能禁用一些元素。但即使禁用也有点傻 - 每次我编辑 alpha
或 beta
“解决方案文件夹”时,都必须单独禁用/重新启用它们。
所以最后的问题是:如何在PyCharm中编辑不同的项目(文件夹),并强制PyCharm不从错误的位置导入模块?
1 个回答
正确的做法不是试图绕过PyCharm的逻辑,而是按照它的设计来使用这个开发工具。也就是说:
- 不要用任何.cmd脚本来启动PyCharm
- 如果在设置中的“Python解释器”里有“alpha”和“beta”相关的路径,记得把它们都删掉
- 分别将“alpha/vendor”和“beta/vendor”文件夹标记为alpha和beta项目的源代码根目录。
这样一来,PyCharm就能正确处理导入的内容,并在你从它运行应用时自动生成正确的PYTHONPATH。