diff --git a/python/helpers/packaging_tool.py b/python/helpers/packaging_tool.py index cb71ea056085..fb8a8d9d5b85 100644 --- a/python/helpers/packaging_tool.py +++ b/python/helpers/packaging_tool.py @@ -39,6 +39,21 @@ def do_uninstall(pkg): error_no_pip() return pip.main(['uninstall', '-y', pkg]) +def do_install(pkg, options): + """ + simple realization for install packages + """ + #TODO: test install + try: + import pip + except ImportError: + error("Python package management tool 'pip' not found. Please install 'pip'", ERROR_NO_PACKAGING_TOOLS) + + if options: + return pip.main(['install', pkg, options]) + else: + return pip.main(['install', pkg]) + def main(): retcode = 0 try: @@ -51,10 +66,11 @@ def main(): usage() do_list() elif cmd == 'install': - if len(sys.argv) != 3: + if len(sys.argv) < 3: usage() pkg = sys.argv[2] - retcode = do_install(pkg) + options = sys.argv[3] + retcode = do_install(pkg, options) elif cmd == 'uninstall': if len(sys.argv) != 3: usage() diff --git a/python/python-ide.iml b/python/python-ide.iml index 7458d1e183c5..08470fc95b07 100644 --- a/python/python-ide.iml +++ b/python/python-ide.iml @@ -21,6 +21,7 @@ + diff --git a/python/src/com/jetbrains/python/packaging/PyPackageManager.java b/python/src/com/jetbrains/python/packaging/PyPackageManager.java index 662f7a647c16..085800525e78 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackageManager.java +++ b/python/src/com/jetbrains/python/packaging/PyPackageManager.java @@ -9,6 +9,7 @@ import com.jetbrains.python.PythonHelpersLocator; import com.jetbrains.python.sdk.PythonSdkType; import com.jetbrains.python.sdk.SdkUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.*; @@ -77,6 +78,11 @@ public class PyPackageManager { return myPackagesCache; } + public void installPackage(@NotNull Sdk sdk, @NotNull PyPackage pkg, @Nullable String options) throws PyExternalProcessException { + runPythonHelper(sdk, PACKAGING_TOOL, list("install", pkg.getName(), options)); + myPackagesCache.remove(sdk); + } + @NotNull public String createVirtualEnv(@NotNull String desinationDir) throws PyExternalProcessException { // TODO: Add boolean systemSitePackages option @@ -151,7 +157,8 @@ public class PyPackageManager { final String name = fields.get(0); final String version = fields.get(1); final String location = fields.get(2); - packages.add(new PyPackage(name, version, location, new ArrayList())); + if (!"Python".equals(name) && !"wsgiref".equals(name)) + packages.add(new PyPackage(name, version, location, new ArrayList())); } return packages; }