如何在Aptana Studio 3中使用virtualenv启用PyDev代码分析?

2 投票
2 回答
1369 浏览
提问于 2025-04-18 10:10

我已经读了很多关于这个问题的文章,不论是在StackOverflow还是其他地方,但尝试了所有建议后都没有成功,所以我决定在这里发帖问问我的具体问题。

我使用的是OSX(10.9),在一个虚拟环境中安装了Python 2.7(除了全局的Python)。我还在用Aptana Studio 3。我尝试了各种设置,最后通过以下步骤达到了目前的配置:

File > Import > General – Existing folder as new project

然后我右键点击项目目录,选择了PyDev > 设置为Django项目。我选择了我的manage.py和设置文件。

接着我进入了属性 > PyDev – 解释器/语法,点击了配置未列出解释器的超链接。我选择了虚拟环境中的Python文件。接着我看到了一系列文件夹供我选择:

list of folders

如果我不更改默认设置直接点击“应用”,就会出现以下错误:

error

即使我继续操作,也会出现各种标准库包/模块的导入错误(例如json)。我去检查了虚拟环境中的lib文件夹,发现这些包/模块确实不存在,这让我对虚拟环境的工作原理更加困惑(我讨厌这些配置的事情,承认自己很长时间以来都尽量避免它们,这也导致我一直保持无知)。我已经安装了virtualenvwrapper。workon env_name可以正常工作,pip安装的包也放在了正确的site-packages中,但标准库似乎还是在访问全局的Python。

无论如何,我因此包含了全局Python的lib文件夹:

enter image description here

然后我进入了属性 > PyDev – PYTHONPATH > 源文件夹标签 > 添加源文件夹,选择了我的Django项目的根目录并点击了应用。

接着我去Aptana Studio 3 > 设置… > PyDev > 代码分析进行了配置:

Code analysis

结果:

某些内容,比如method( self ):(注意空格)在保存时会被纠正。不过,对于很多其他内容,比如dict[ 'key' ](又是多余的空格)、每行超过80个字符等,我没有收到任何PEP8警告。

我还在相对导入时遇到错误(例如from ..utils import *),因此所有使用这些导入值的行都会出错。

我到底可能做错了什么呢??

2 个回答

0

其实,真正的问题在于Aptana Studio 3里面捆绑的PyDev版本比较旧(而且你不能单独更新它)。虽然库的虚拟环境文件夹是存在的,但在这个版本的PyDev中默认是没有勾选的(所以你可以手动勾选一下——不过在最新的PyDev中这个问题已经解决了)。

至于pep8,这是一个众所周知的问题,当前版本的PyDev无法与最新的pep8兼容(因为它使用的是内部的Jython来运行,而这个版本有点老旧:Jython 2.2.1)。这个问题刚刚被修复——不过现在还没有在正式版本中发布,只是在当前的夜间构建版本中——但应该会在下周的正式版本中发布(这次更新了内部的Jython、pep8,并增加了autopep8作为代码格式化的选项)。

不过,如果你在使用Aptana Studio 3,我不太清楚他们什么时候会把它升级到那个版本(我不确定你在Aptana Studio 3中使用了哪些功能,但根据你的需求,LiClipse:http://brainwy.github.io/liclipse/可以作为一个替代选择——而且它总是保持更新,使用最新的PyDev)。

1

虽然我还没有完全解决我的问题,但我还是把这个发出来作为一个回答,因为它确实达到了标题所要求的效果。

我重新安装了Aptana,而不是导入一个现有的文件夹作为项目,我创建了一个Django项目(New > Project > PyDev Django Project),然后把默认的新目录替换成了我项目的根目录。这成功了。现在我收到了PEP8的警告!

不过,有一些注意事项

我不知道这个“创建项目”的向导在后台做了什么不同的事情,但正如我担心的那样,它以某种方式搞乱了我的文件。用git status查看时,几乎所有文件都显示被删除,还有很多未跟踪的文件。我用git checkout -- <project root>git clean -f -d清理了一下。这解决了问题,PEP8的警告依然显示。

第二个问题是相对导入坏掉了。我有一行from ..utils import *。这行本身没有错误或警告,但在每一行使用这个导入的地方,我都得到了错误的“未定义变量”错误。

根据这个问题,似乎这是一个未解决的PyDev问题。

不过,根据PyDev的发布历史,版本2.2“修复了带通配符的相对导入问题”,这让我感到很困惑。

目前我想我会简单地隐藏“未定义变量”的错误,因为这些错误在我实际运行代码时会被发现。但使用IDE的主要目的就是提前捕捉这些错误,所以如果有人能对此问题提供一些见解,我将非常感激。

附注:在LiClipse中的情况完全相同。PEP8现在有效,但相对导入导致“未定义变量”的错误。

更新

这是当前情况的截图:

未定义变量错误

撰写回答