omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    JS2PY install fails

    Pythonista
    3
    12
    9424
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ccc
      ccc last edited by

      Python is interpreting the % as an old style string format. Try changing 100% to 100%% and install again.

      1 Reply Last reply Reply Quote 0
      • ihf
        ihf last edited by

        Sorry, but I'm merely entering "pip install js2py' in Stash. Where should I make the change?

        1 Reply Last reply Reply Quote 0
        • ccc
          ccc last edited by ccc

          That text should be in the setup.py file inside the archive file: Js2Py-0.41.tar.gz

          1 Reply Last reply Reply Quote 0
          • ihf
            ihf last edited by

            I don't think that is the problem. The '100%' is just part of the literal definition:

            'description='JavaScript to Python Translator & JavaScript interpreter written in 100% pure Python.' in the setup.py module.
            

            If I ignore the setup failure and enter import js2py in the console, and I get "No module name pyjsparser"

            1 Reply Last reply Reply Quote 0
            • ccc
              ccc last edited by ccc

              Try typing your error message into Google and see what comes back... Based on your error message, I believe that Python is trying to interpolate the string in question.

              You could try opening and issue on https://github.com/PiotrDabkowski/Js2Py and see if those folks have advice.

              1 Reply Last reply Reply Quote 0
              • ihf
                ihf last edited by

                I tried the pip install on OSX and it worked fined. Perhaps pip install on Stash can't do this?

                ihf$ pip install js2py
                Collecting js2py
                Downloading Js2Py-0.41.tar.gz (506kB)
                100% |################################| 512kB 1.6MB/s
                Collecting tzlocal>=1.2 (from js2py)
                Downloading tzlocal-1.3.tar.gz
                Collecting six>=1.10 (from js2py)
                Downloading six-1.10.0-py2.py3-none-any.whl
                Collecting pyjsparser>=2.4.5 (from js2py)
                Downloading pyjsparser-2.4.5.tar.gz
                Requirement already satisfied: pytz in /anaconda/lib/python2.7/site-packages (from tzlocal>=1.2->js2py)
                Building wheels for collected packages: js2py, tzlocal, pyjsparser
                Running setup.py bdist_wheel for js2py ... done
                Stored in directory: /Users/ihf/Library/Caches/pip/wheels/24/50/10/50f3fc4c1c77e4f1bda05d28b1979259a357f5c06bd28e99af
                Running setup.py bdist_wheel for tzlocal ... done
                Stored in directory: /Users/ihf/Library/Caches/pip/wheels/80/19/a8/635ad9f4ad8a63b49d073c55cbca31fb5898ce2560ed145a69
                Running setup.py bdist_wheel for pyjsparser ... done
                Stored in directory: /Users/ihf/Library/Caches/pip/wheels/34/83/7d/0bdaeb6cf9b13ae9cd9aacd1dd0b59b91df81eb7a68938a035
                Successfully built js2py tzlocal pyjsparser
                Installing collected packages: tzlocal, six, pyjsparser, js2py
                Found existing installation: six 1.8.0
                Uninstalling six-1.8.0:
                Successfully uninstalled six-1.8.0
                Successfully installed js2py-0.41 pyjsparser-2.4.5 six-1.10.0 tzlocal-1.3

                1 Reply Last reply Reply Quote 0
                • ccc
                  ccc last edited by

                  Try to install tzlocal and pyjsparser first. This is what happened on your Mac install.

                  1 Reply Last reply Reply Quote 0
                  • ihf
                    ihf last edited by

                    Thanks, that helped (import js2py works) but if I try a simple test:

                    import js2py
                    js2py.eval_js('console.log( "Hello World!" )')

                    I get a long Traceback.

                    1 Reply Last reply Reply Quote 0
                    • ihf
                      ihf last edited by

                      Here is the Traceback in case anyone can make sense of it:

                      import js2py
                      js2py.eval_js('console.log("hello worlds")')
                      /private/var/mobile/Containers/Shared/AppGroup/637EEB4B-60E1-4F48-A8E5-66F2C7D9FCA2/Pythonista3/Documents/site-packages/js2py/constructors/time_helpers.py:10: UserWarning: Please install or fix tzlocal library (pip install tzlocal) in order to make Date object work better. Otherwise I will assume DST is in effect all the time
                      warnings.warn('Please install or fix tzlocal library (pip install tzlocal) in order to make Date object work better. Otherwise I will assume DST is in effect all the time')
                      Traceback (most recent call last):
                      File "<string>", line 1, in <module>
                      File "/private/var/mobile/Containers/Shared/AppGroup/637EEB4B-60E1-4F48-A8E5-66F2C7D9FCA2/Pythonista3/Documents/site-packages/js2py/evaljs.py", line 111, in eval_js
                      return e.eval(js)
                      File "/private/var/mobile/Containers/Shared/AppGroup/637EEB4B-60E1-4F48-A8E5-66F2C7D9FCA2/Pythonista3/Documents/site-packages/js2py/evaljs.py", line 180, in eval
                      self.execute(code, use_compilation_plan=use_compilation_plan)
                      File "/private/var/mobile/Containers/Shared/AppGroup/637EEB4B-60E1-4F48-A8E5-66F2C7D9FCA2/Pythonista3/Documents/site-packages/js2py/evaljs.py", line 175, in execute
                      exec(compiled, self._context)
                      File "<EvalJS snippet>", line 2, in <module>
                      File "/private/var/mobile/Containers/Shared/AppGroup/637EEB4B-60E1-4F48-A8E5-66F2C7D9FCA2/Pythonista3/Documents/site-packages/js2py/base.py", line 834, in call
                      return self.call(self.GlobalObject, args)
                      File "/private/var/mobile/Containers/Shared/AppGroup/637EEB4B-60E1-4F48-A8E5-66F2C7D9FCA2/Pythonista3/Documents/site-packages/js2py/base.py", line 1280, in call
                      return Js(self.code(*args))
                      File "/private/var/mobile/Containers/Shared/AppGroup/637EEB4B-60E1-4F48-A8E5-66F2C7D9FCA2/Pythonista3/Documents/site-packages/js2py/host/jseval.py", line 10, in Eval
                      local_scope = inspect.stack()[3][0].f_locals['var']
                      File "/var/containers/Bundle/Application/1950D74B-DAE2-43A7-8ACE-EC2021668793/Pythonista3.app/Frameworks/Py2Kit.framework/pylib/inspect.py", line 1061, in stack
                      return getouterframes(sys._getframe(1), context)
                      File "/var/containers/Bundle/Application/1950D74B-DAE2-43A7-8ACE-EC2021668793/Pythonista3.app/Frameworks/Py2Kit.framework/pylib/inspect.py", line 1039, in getouterframes
                      framelist.append((frame,) + getframeinfo(frame, context))
                      File "/var/containers/Bundle/Application/1950D74B-DAE2-43A7-8ACE-EC2021668793/Pythonista3.app/Frameworks/Py2Kit.framework/pylib/inspect.py", line 1014, in getframeinfo
                      lines, lnum = findsource(frame)
                      File "/var/containers/Bundle/Application/1950D74B-DAE2-43A7-8ACE-EC2021668793/Pythonista3.app/Frameworks/Py2Kit.framework/pylib/inspect.py", line 533, in findsource
                      module = getmodule(object, file)
                      File "/var/containers/Bundle/Application/1950D74B-DAE2-43A7-8ACE-EC2021668793/Pythonista3.app/Frameworks/Py2Kit.framework/pylib/inspect.py", line 498, in getmodule
                      f = getabsfile(module)
                      File "/var/containers/Bundle/Application/1950D74B-DAE2-43A7-8ACE-EC2021668793/Pythonista3.app/Frameworks/Py2Kit.framework/pylib/inspect.py", line 467, in getabsfile
                      _filename = getsourcefile(object) or getfile(object)
                      File "/var/containers/Bundle/Application/1950D74B-DAE2-43A7-8ACE-EC2021668793/Pythonista3.app/Frameworks/Py2Kit.framework/pylib/inspect.py", line 452, in getsourcefile
                      if os.path.exists(filename):
                      File "/var/containers/Bundle/Application/1950D74B-DAE2-43A7-8ACE-EC2021668793/Pythonista3.app/Frameworks/Py2Kit.framework/pylib/genericpath.py", line 28, in exists
                      os.stat(path)
                      TypeError: coercing to Unicode: need string or buffer, OmniClass found

                      1 Reply Last reply Reply Quote 0
                      • ihf
                        ihf last edited by

                        I restarted Pythonista and the errors above disappeared. The only warning message I get now is something about the Date object and the assumption of DST and the need to install or fix tzlocal though that was installed as per @ccc suggestion.

                        1 Reply Last reply Reply Quote 0
                        • ywangd
                          ywangd last edited by

                          This was caused by a bug in pip when it registers installed package, which is backed by RawConfigParser. The RawConfigParser has its own string interpolation rule which relies on the percentage sign.

                          The bug has now been fixed and you can get it by selfupdate -f.

                          1 Reply Last reply Reply Quote 1
                          • First post
                            Last post
                          Powered by NodeBB Forums | Contributors