refresh VFS for site-packages directory after installing or uninstalling a package

This commit is contained in:
Dmitry Jemerov
2012-08-08 13:45:14 +02:00
parent bad82a7348
commit 5835399ef8
3 changed files with 13 additions and 1 deletions
@@ -14,6 +14,8 @@ import java.util.regex.Pattern;
*/
@NonNls
public class PyNames {
public static final String SITE_PACKAGES = "site-packages";
private PyNames() {
}
@@ -27,10 +27,12 @@ import com.intellij.util.ArrayUtil;
import com.intellij.util.Function;
import com.intellij.util.SystemProperties;
import com.intellij.util.net.HttpConfigurable;
import com.jetbrains.python.PyNames;
import com.jetbrains.python.PythonHelpersLocator;
import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.psi.PyListLiteralExpression;
import com.jetbrains.python.psi.PyStringLiteralExpression;
import com.jetbrains.python.psi.search.PyProjectScopeBuilder;
import com.jetbrains.python.remote.PyRemoteInterpreterException;
import com.jetbrains.python.remote.PythonRemoteInterpreterManager;
import com.jetbrains.python.remote.PythonRemoteSdkAdditionalData;
@@ -461,6 +463,13 @@ public class PyPackageManagerImpl extends PyPackageManager {
public void clearCaches() {
myPackagesCache = null;
myExceptionCache = null;
VirtualFile libDir = PyProjectScopeBuilder.findLibDir(mySdk);
if (libDir != null) {
VirtualFile sitePackages = libDir.findChild(PyNames.SITE_PACKAGES);
if (sitePackages != null) {
sitePackages.refresh(true, true);
}
}
}
private static <T> List<T> list(T... xs) {
@@ -39,6 +39,7 @@ import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.SmartList;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.PyNames;
import com.jetbrains.python.PythonFileType;
import com.jetbrains.python.PythonHelpersLocator;
import com.jetbrains.python.facet.PythonFacetSettings;
@@ -750,7 +751,7 @@ public class PythonSdkType extends SdkType {
if (pythonSdk != null) {
final VirtualFile libDir = PyProjectScopeBuilder.findLibDir(pythonSdk);
if (libDir != null && VfsUtilCore.isAncestor(libDir, vFile, false)) {
final VirtualFile sitePackages = libDir.findChild("site-packages");
final VirtualFile sitePackages = libDir.findChild(PyNames.SITE_PACKAGES);
if (sitePackages != null && VfsUtilCore.isAncestor(sitePackages, vFile, false)) {
return false;
}