WebStorm startup error on Lubuntu 14.04
Question: I am new to Linux. I am using Lubuntu 14.04. Python version is 2.7.6.

I have installed WebStorm 8 in following location:

    
    
    david@david:/usr/opt/webstorm/bin$
    

When I run following command in bin folder:

    
    
    ./webstorm.sh
    

It gives me following error:

    
    
        Traceback (most recent call last):
      File "/usr/lib/python2.7/site.py", line 68, in <module>
        import os
      File "/usr/lib/python2.7/os.py", line 398, in <module>
        import UserDict
      File "/usr/lib/python2.7/UserDict.py", line 83, in <module>
        import _abcoll
      File "/usr/lib/python2.7/_abcoll.py", line 11, in <module>
        from abc import ABCMeta, abstractmethod
      File "/usr/lib/python2.7/abc.py", line 8, in <module>
        from _weakrefset import WeakSet
    ImportError: No module named _weakrefset
    

I have installed "weakrefset" by using following command (and it gave me
message of successful installation):

    
    
    sudo pip install weakrefset
    

But problem is still there and Webstorm is not starting up.

WebStrom.sh is as follows:

    
    
        #!/usr/bin/python
    
    import socket
    import struct
    import sys
    import os
    import time
    
    # see com.intellij.idea.SocketLock for the server side of this interface
    
    RUN_PATH = '/usr/opt/webstorm/bin/webstorm.sh'
    CONFIG_PATH = '/home/david/.WebStorm8/config'
    
    args = []
    skip_next = False
    for i, arg in enumerate(sys.argv[1:]):
        if arg == '-h' or arg == '-?' or arg == '--help':
            print(('Usage:\n' + \
                   '  {0} -h |-? | --help\n' + \
                   '  {0} [-l|--line line] file[:line]\n' + \
                   '  {0} diff file1 file2').format(sys.argv[0]))
            exit(0)
        elif arg == 'diff' and i == 0:
            args.append(arg)
        elif arg == '-l' or arg == '--line':
            args.append(arg)
            skip_next = True
        elif skip_next:
            args.append(arg)
            skip_next = False
        else:
            if ':' in arg:
                file_path, line_number = arg.rsplit(':', 1)
                if line_number.isdigit():
                  args.append('-l')
                  args.append(line_number)
                  args.append(os.path.abspath(file_path))
                else:
                  args.append(os.path.abspath(arg))
            else:
                args.append(os.path.abspath(arg))
    
    def launch_with_port(port):
        found = False
    
        s = socket.socket()
        s.settimeout(0.3)
        try:
            s.connect(('127.0.0.1', port))
        except:
            return False
    
        while True:
            try:
                path_len = struct.unpack(">h", s.recv(2))[0]
                path = s.recv(path_len)
                path = os.path.abspath(path)
                if os.path.abspath(path) == os.path.abspath(CONFIG_PATH):
                    found = True
                    break
            except:
                break
    
        if found:
            if args:
                cmd = "activate " + os.getcwd() + "\0" + "\0".join(args)
                encoded = struct.pack(">h", len(cmd)) + cmd
                s.send(encoded)
                time.sleep(0.5)   # don't close socket immediately
            return True
    
        return False
    
    port = -1
    try:
        f = open(os.path.join(CONFIG_PATH, 'port'))
        port = int(f.read())
    except Exception:
        type, value, traceback = sys.exc_info()
        print(value)
        port = -1
    
    if port == -1:
        # SocketLock actually allows up to 50 ports, but the checking takes too long
        for port in range(6942, 6942+10):
            if launch_with_port(port): exit()
    else:
        if launch_with_port(port): exit()
    
    if sys.platform == "darwin":
        # Mac OS: RUN_PATH is *.app path
        if len(args):
            args.insert(0, "--args")
        os.execvp("open", ["-a", RUN_PATH] + args)
    else:
        # unix common
        bin_dir, bin_file = os.path.split(RUN_PATH)
        os.chdir(bin_dir)
        os.execv(bin_file, [bin_file] + args)
    

Can someone guide me to solve this problem.


Answer: Might be a problem of python-virtualenv that was fixed in python-virtualenv -
1.4.9-3ubuntu1. Please see: <https://bugs.launchpad.net/ubuntu/+source/python-
virtualenv/+bug/662611>

See also <http://devnet.jetbrains.com/message/5514381#5514381>

