sublimetext-codeformatter icon indicating copy to clipboard operation
sublimetext-codeformatter copied to clipboard

ImportError: No module named 'jsbeautifier.core'

Open elliotboney opened this issue 7 years ago • 7 comments

Getting an error on ST3 load, couldn't find another open or closed issue dealing with this.

Running osx high seirra, let me know if there is any other helpful info i can give.

Traceback (most recent call last):
  File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "/Users/eboney/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/CodeFormatter.py", line 26, in <module>
    from .codeformatter.formatter import Formatter
  File "/Users/eboney/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/formatter.py", line 22, in <module>
    from .cssformatter import CssFormatter
  File "/Users/eboney/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/cssformatter.py", line 7, in <module>
    import cssbeautifier
  File "/Users/eboney/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/lib/cssbeautifier/__init__.py", line 32, in <module>
    from cssbeautifier.css.beautifier import Beautifier
  File "/Users/eboney/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/lib/cssbeautifier/css/beautifier.py", line 6, in <module>
    from jsbeautifier.core.options import mergeOpts
ImportError: No module named 'jsbeautifier.core'

elliotboney avatar Nov 29 '17 00:11 elliotboney

@thecotne could you test this on your MAC?

akalongman avatar Nov 29 '17 08:11 akalongman

I'll give it a shot on my Macbook and see if I'm getting it there also.

On Wed, Nov 29, 2017, 2:43 AM Avtandil Kikabidze [email protected] wrote:

@thecotne https://github.com/thecotne could you test this on your MAC?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/akalongman/sublimetext-codeformatter/issues/348#issuecomment-347790771, or mute the thread https://github.com/notifications/unsubscribe-auth/ACqpsEb4hpfYzWHS9_dK3SPRXuoN_Oetks5s7RkUgaJpZM4QuQV0 .

-- -Elliot Boney

elliotboney avatar Nov 29 '17 19:11 elliotboney

FWIW, I get this on MacOS X Sierra (10.12.6) running SublimeText 3.0 build 3143.

reloading plugin CodeFormatter.CodeFormatter Traceback (most recent call last): File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 109, in reload_plugin m = importlib.import_module(modulename) File "./python3.3/importlib/init.py", line 90, in import_module File "", line 1584, in _gcd_import File "", line 1565, in _find_and_load File "", line 1532, in _find_and_load_unlocked File "", line 584, in _check_name_wrapper File "", line 1022, in load_module File "", line 1003, in load_module File "", line 560, in module_for_loader_wrapper File "", line 868, in _load_module File "", line 313, in _call_with_frames_removed File "/Users/jim.jarrett/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/CodeFormatter.py", line 26, in from .codeformatter.formatter import Formatter File "/Users/jim.jarrett/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/formatter.py", line 22, in from .cssformatter import CssFormatter File "/Users/jim.jarrett/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/cssformatter.py", line 7, in import cssbeautifier File "/Users/jim.jarrett/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/lib/cssbeautifier/init.py", line 32, in from cssbeautifier.css.beautifier import Beautifier File "/Users/jim.jarrett/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/lib/cssbeautifier/css/beautifier.py", line 6, in from jsbeautifier.core.options import mergeOpts ImportError: No module named 'jsbeautifier.core'

jrjarrett avatar Dec 06 '17 14:12 jrjarrett

MacOS High Sierra 10.13.2 ST3 (3.0, Build 3143)

reloading plugin CodeFormatter.CodeFormatter Traceback (most recent call last): File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 109, in reload_plugin m = importlib.import_module(modulename) File "./python3.3/importlib/init.py", line 90, in import_module File "", line 1584, in _gcd_import File "", line 1565, in _find_and_load File "", line 1532, in _find_and_load_unlocked File "", line 584, in _check_name_wrapper File "", line 1022, in load_module File "", line 1003, in load_module File "", line 560, in module_for_loader_wrapper File "", line 868, in _load_module File "", line 313, in _call_with_frames_removed File "/Users/info/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/CodeFormatter.py", line 26, in from .codeformatter.formatter import Formatter File "/Users/info/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/formatter.py", line 23, in from .scssformatter import ScssFormatter File "/Users/info/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/scssformatter.py", line 6, in import scssbeautifier File "/Users/info/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/lib/scssbeautifier/init.py", line 31, in from cssbeautifier.css.options import BeautifierOptions ImportError: No module named 'cssbeautifier.css'

JoschaP avatar Dec 29 '17 01:12 JoschaP

MacOS High Sierra 10.13.2 ST3 (3.0, Build 3143)

reloading plugin CodeFormatter.CodeFormatter
Traceback (most recent call last):
  File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "/Users/lucacappelletti/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/CodeFormatter.py", line 26, in <module>
    from .codeformatter.formatter import Formatter
  File "/Users/lucacappelletti/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/formatter.py", line 23, in <module>
    from .scssformatter import ScssFormatter
  File "/Users/lucacappelletti/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/scssformatter.py", line 6, in <module>
    import scssbeautifier
  File "/Users/lucacappelletti/Library/Application Support/Sublime Text 3/Packages/CodeFormatter/codeformatter/lib/scssbeautifier/__init__.py", line 31, in <module>
    from cssbeautifier.css.options import BeautifierOptions
ImportError: No module named 'cssbeautifier.css'

For the time being I've resolved by disabling the scss package and setting chmod +x to the codeformatter directory.

# @author             Avtandil Kikabidze
# @copyright         Copyright (c) 2008-2015, Avtandil Kikabidze aka LONGMAN ([email protected])
# @link             http://longman.me
# @license         The MIT License (MIT)

import os
import sys
import re
import sublime

directory = os.path.dirname(os.path.realpath(__file__))
libs_path = os.path.join(directory, 'lib')

if libs_path not in sys.path:
    sys.path.append(libs_path)

try:
    # Python 3
    from .phpformatter import PhpFormatter
    from .jsformatter import JsFormatter
    from .htmlformatter import HtmlFormatter
    from .cssformatter import CssFormatter
    # from .scssformatter import ScssFormatter
    from .pyformatter import PyFormatter
    from .vbscriptformatter import VbscriptFormatter
    from .coldfusionformatter import ColdfusionFormatter

except (ValueError):
    # Python 2
    from phpformatter import PhpFormatter
    from jsformatter import JsFormatter
    from htmlformatter import HtmlFormatter
    from cssformatter import CssFormatter
    from scssformatter import ScssFormatter
    from pyformatter import PyFormatter
    from vbscriptformatter import VbscriptFormatter
    from coldfusionformatter import ColdfusionFormatter


class Formatter:

    def __init__(self, view, syntax=None):

        self.platform = sublime.platform()
        self.classmap = {}
        self.st_version = 2
        if sublime.version() == '' or int(sublime.version()) > 3000:
            self.st_version = 3

        self.file_name = view.file_name()
        self.settings = sublime.load_settings('CodeFormatter.sublime-settings')
        self.packages_path = sublime.packages_path()

        self.syntax_file = view.settings().get('syntax')
        self.syntax = syntax or self.get_syntax()

        # map of settings names with related class
        map_settings_formatter = [
            ('codeformatter_php_options', PhpFormatter),
            ('codeformatter_js_options', JsFormatter),
            ('codeformatter_css_options', CssFormatter),
            ('codeformatter_html_options', HtmlFormatter),
            ('codeformatter_python_options', PyFormatter),
            ('codeformatter_vbscript_options', VbscriptFormatter),
            # ('codeformatter_scss_options', ScssFormatter),
            ('codeformatter_coldfusion_options', ColdfusionFormatter),
        ]

        for name, _class in map_settings_formatter:
            syntaxes = self.settings.get(name, {}).get('syntaxes')
            if not syntaxes or not isinstance(syntaxes, str):
                continue
            for _formatter in syntaxes.split(','):
                self.classmap[_formatter.strip()] = _class

    def format(self, text):
        formatter = self.classmap[self.syntax](self)
        try:
            stdout, stderr = formatter.format(text)
        except Exception as e:
            stdout = ''
            stderr = str(e)

        return self.clean(stdout), self.clean(stderr)

    def exists(self):
        return self.syntax in self.classmap

    def get_syntax(self):
        pattern = re.compile(
            r'Packages/.*/(.+?).(?=tmLanguage|sublime-syntax)')
        m = pattern.search(self.syntax_file)
        found = ''
        if m and len(m.groups()) > 0:
            found = m.groups()[0]
        return found.lower()

    def format_on_save_enabled(self):
        if not self.exists():
            return False
        formatter = self.classmap[self.syntax](self)
        return formatter.format_on_save_enabled(self.file_name)

    def clean(self, string):
        if hasattr(string, 'decode'):
            string = string.decode('UTF-8', 'ignore')

        return re.sub(r'\r\n|\r', '\n', string)

LucaCappelletti94 avatar Jan 06 '18 13:01 LucaCappelletti94

win10_17063 sublime text 3(3126) reloading plugin CodeFormatter.CodeFormatter Traceback (most recent call last): File "C:\Asofts\sublimetext3\sublime_plugin.py", line 109, in reload_plugin m = importlib.import_module(modulename) File "./python3.3/importlib/init.py", line 90, in import_module File "", line 1584, in _gcd_import File "", line 1565, in _find_and_load File "", line 1532, in _find_and_load_unlocked File "", line 584, in _check_name_wrapper File "", line 1022, in load_module File "", line 1003, in load_module File "", line 560, in module_for_loader_wrapper File "", line 868, in _load_module File "", line 313, in call_with_frames_removed File "C:\Asofts\sublimetext3\Data\Packages\CodeFormatter\CodeFormatter.py", line 26, in from .codeformatter.formatter import Formatter File "C:\Asofts\sublimetext3\Data\Packages\CodeFormatter\codeformatter\formatter.py", line 23, in from .scssformatter import ScssFormatter File "C:\Asofts\sublimetext3\Data\Packages\CodeFormatter\codeformatter\scssformatter.py", line 6, in import scssbeautifier File "C:\Asofts\sublimetext3\Data\Packages\CodeFormatter\codeformatter\lib\scssbeautifier_init.py", line 31, in from cssbeautifier.css.options import BeautifierOptions ImportError: No module named 'cssbeautifier.css'

python install infor about

C:\Users\vic>pip show jsbeautifier Name: jsbeautifier Version: 1.7.5 Summary: JavaScript unobfuscator and beautifier. Home-page: http://jsbeautifier.org Author: Einar Lielmanis, Stefano Sanfilippo et al. Author-email: [email protected] License: MIT Location: c:\asofts\python3\lib\site-packages Requires: six, editorconfig C:\Users\vic>

is there another way to fix it ?I do not want to edit CodeFormatter.py as LucaCappelletti94

enderwsp avatar Jan 11 '18 02:01 enderwsp

It's an issue related to how the plugin imports its files. For example, I believe that in the scss plugin it tries to import the wrong folder (the css one) instead of its /css folder. If I manage to understand how to fix imports I'll fork and push my fix to this repository.

LucaCappelletti94 avatar Jan 11 '18 14:01 LucaCappelletti94