• Login
Community
  • Login

No module named Npp

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
pythonscript
32 Posts 4 Posters 7.5k Views
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.
  • A
    Alan Kilborn @Alina Gubanova
    last edited by Jun 20, 2019, 7:15 PM

    @Alina-Gubanova

    You are in an area where I don’t think I can provide further help, but @dail is typing, so… :)

    A 1 Reply Last reply Jun 20, 2019, 7:40 PM Reply Quote 0
    • A
      Alina Gubanova @Alan Kilborn
      last edited by Jun 20, 2019, 7:40 PM

      @Alan-Kilborn thanks for your help anyway!

      1 Reply Last reply Reply Quote 0
      • G
        guy038
        last edited by guy038 Jun 20, 2019, 7:51 PM Jun 20, 2019, 7:42 PM

        Hello, @alina-gubanova, @alan-kilborn, and All,

        Among my numerous portable versions of Notepad++, installed on my laptop, I considered the most recent one, where the Python script was installed => I tested the Alina’s script with Notepad++ v7.6.3 !

        As this version is located in D:\@@\763\... :

        • First, I created a folder named D:\@@\763\Test

        • Then I created two ANSI files, in folder Test

        • I opened N++ v7.6.3 and the Python console

        • I used the Python script, below which worked as expected : The two files, in the Test folder, have been saved with the new UTf-8 encoding, without any trouble !

        import os;
        import sys;
        import Npp;
        from Npp import notepad
        
        filePathSrc="D:\\@@\\763\\Test" # Path to the folder with files to convert
        
        for root, dirs, files in os.walk(filePathSrc):
            for fn in files:
                if fn[-4:] == '.txt':
                     notepad.open(root + "\\" + fn)
                     console.write(root + "\\" + fn + "\r\n")
                     notepad.runMenuCommand("Encoding", "Convert to UTF-8")
                     notepad.save()
        notepad.close()
        

        and after executing the script, it wrote, on console :

        Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)]
        Initialisation took 125ms
        Ready.
        D:\@@\763\Test\File_1.txt
        D:\@@\763\Test\File_2.txt
        

        As you can see, in the script :

        • Of course, I just changed the value of the variable filePathSrc

        • I also changed the line :

                 notepad.runMenuCommand("Encoding", "Convert to UTF-8 without BOM")
        

        by the line :

                 notepad.runMenuCommand("Encoding", "Convert to UTF-8")
        

        This detail supposes that @alina-gubanova is using, a very old version of N++ ;-))

        Best Regards,

        guy038

        A 1 Reply Last reply Jun 20, 2019, 7:58 PM Reply Quote 4
        • D
          dail @Alina Gubanova
          last edited by Jun 20, 2019, 7:52 PM

          @Alina-Gubanova How are you launching the script? Inside of Notepad++?

          A 1 Reply Last reply Jun 20, 2019, 7:56 PM Reply Quote 1
          • A
            Alina Gubanova @dail
            last edited by Jun 20, 2019, 7:56 PM

            @dail yes.
            So these are my steps:
            Run -> Python (where I saved C:…\Python2.7\Lib\idlelib\idle.py “$(FULL_CURRENT_PATH)”) -> IDLE opens up in a new window -> press F5 -> Traceback (most recent call last): File "C:\Users\agubanova\Notepad++\plugins\PythonScript\scripts\new script.py", line 3, in <module> import Npp; ImportError: No module named Npp

            A 1 Reply Last reply Jun 20, 2019, 8:29 PM Reply Quote 1
            • A
              Alina Gubanova @guy038
              last edited by Jun 20, 2019, 7:58 PM

              @guy038 thank you so much for putting your time in such a detailed explanation. I should definitely update my N++ version :)
              I followed every step of your explanation, and I still get an error. When you Run the script what is the directory that you use?

              I suspect mine could be wrong. Is it C:…\Python2.7\Lib\idlelib\idle.py “$(FULL_CURRENT_PATH)” ?

              1 Reply Last reply Reply Quote 2
              • A
                Alan Kilborn @Alina Gubanova
                last edited by Alan Kilborn Jun 20, 2019, 8:29 PM Jun 20, 2019, 8:29 PM

                @Alina-Gubanova said:

                So these are my steps

                You could have said that in the beginning and saved some time. You can’t run a Pythonscript that way. It isn’t going to know about the special “notepad” objects. You have to run it from the Pythonscript menu, as I said earlier.

                A D 2 Replies Last reply Jun 20, 2019, 9:15 PM Reply Quote 4
                • G
                  guy038
                  last edited by Jun 20, 2019, 9:10 PM

                  Hi, @alina-gubanova,

                  Before, describing the tree structure of my D:\@à\763 folder, note two points :

                  • The install folder of a portable N++ version must be different from, either, C\Program files and C\Program files (x86)

                  • Any local installation of Notepad++ needs the zero-length file, doLocalConf.xml, along with the executable notepad++.exe

                  This file, installed by default, assures you that any file created and/or handled by Notepad++, will be located inside the installation folder ;-))


                  Depending of your system, follow one of these links, below, to download the last portable N++ v7.7.1

                  https://notepad-plus-plus.org/repository/7.x/7.7.1/npp.7.7.1.bin.zip

                  https://notepad-plus-plus.org/repository/7.x/7.7.1/npp.7.7.1.bin.x64.zip

                  Just create any folder in your system and extract the contents of the archive in this folder !

                  On the other hand, I’m using the PythonScript v1.3.0.0 ( PythonScript_Full_1.3.0.0.zip ) but you’ll find the latest release v1.4.0.0 , below :

                  https://github.com/bruderstein/PythonScript/releases

                  Note that, from N++ version v7.6 and above, there’s a new organization of plugins, in the Plugins folder. From now on, any plugin, let’s say myFirstPlugin.dll, must be moved inside a folder named the same way, so myFirstPlugin !


                  OK, as promised, here is the tree structure of my D:\@@\763 folder :

                  D:\@@\763
                  	\
                  	|
                  	|-- autoCompletion (folder)
                  	|                \
                  	|                |-- ".xml" files
                  	|
                  	|
                  	|-- localization (folder)
                  	|              \
                  	|              |-- ".xml" files
                  	|
                  	|
                  	|-- plugins (folder)
                  	|         \
                  	|         |
                  	|         |-- Config (folder)
                  	|         |        \
                  	|         |        |
                  	|         |        |-- Hunspell (folder)
                  	|         |        |          \
                  	|         |        |          |-- en_US.aff
                  	|         |        |          |
                  	|         |        |          |-- en_US.dic
                  	|         |        |
                  	|         |        |
                  	|         |        |-- PythonScript (folder)
                  	|         |        |              \
                  	|         |        |              |-- scripts (folder)
                  	|         |        |                        \
                  	|         |        |                         |-- Alina.py ( YOUR script )
                  	|         |        |
                  	|         |        |
                  	|         |        |-- ".ini" files
                  	|         |        |
                  	|         |        |
                  	|         |        |-- nppPluginList.dll
                  	|         |
                  	|         |
                  	|         |-- doc (folder)
                  	|         |     \
                  	|         |      |-- PythonScript(folder)
                  	|         |                     \
                  	|         |                     |-- _sources (folder)
                  	|         |                     |
                  	|         |                     |-- _static  (folder)
                  	|         |                     |
                  	|         |                     |-- ".html" files and Miscellaneous files
                  	|         |
                  	|         |
                  	|         |-- DSpellCheck (folder)
                  	|         |             \
                  	|         |             |-- DSpellCheck.dll
                  	|         |
                  	|         |
                  	|         |-- mineTools (folder)
                  	|         |           \
                  	|         |           |-- mineTools.dll
                  	|         |
                  	|         |
                  	|         |-- NppConverter (folder)
                  	|         |              \
                  	|         |              |-- NppConverter.dll
                  	|         |
                  	|         |
                  	|         |-- NppExport (folder)
                  	|         |           \
                  	|         |           |-- NppExport.dll
                  	|         |
                  	|         |
                  	|         |-- PythonScript (folder)
                  	|                        \
                  	|                        |-- lib (folder)
                  	|                        |     \
                  	|                        |      |-- Sub-folders
                  	|                        |      |
                  	|                        |      |-- ".py" files
                  	|                        |
                  	|                        |
                  	|                        |-- scripts (folder)
                  	|                        |         \
                  	|                        |         |-- Samples (folder)
                  	|                        |         |         \
                  	|                        |         |         |-- ".py" scripts
                  	|                        |         |
                  	|                        |         |-- startup.py
                  	|                        |
                  	|                        |
                  	|                        |-- PythonScript.dll  ( Version 1.3.0.0 )
                  	|
                  	|
                  	|-- Test
                  	|      \
                  	|      |-- File_1.txt
                  	|      |
                  	|      |-- File_2.txt
                  	|
                  	|
                  	|
                  	|-- themes (folder)
                  	|        \
                  	|        |-- ".xml" files
                  	|
                  	|
                  	|-- updater (folder)
                  	|         \
                  	|         |-- GUP.exe
                  	|         |
                  	|         |-- gup.xml
                  	|         |
                  	|         |-- libcurl.dll
                  	|
                  	|
                  	|-- doLocalConf.xml
                  	|
                  	|
                  	|-- Notepad++.exe  ( Version 7.6.3 )
                  	|
                  	|
                  	|-- python27.dll
                  	|
                  	|
                  	|-- SciLexer.dll
                  	|
                  	|
                  	|-- Some ".txt" files
                  	|
                  	|
                  	|-- Some ".xml" CONFIGURATION files
                  

                  I Just hope that you’ll get some part useful !

                  Cheers,

                  guy038

                  A 1 Reply Last reply Jun 20, 2019, 9:17 PM Reply Quote 3
                  • A
                    Alina Gubanova @Alan Kilborn
                    last edited by Jun 20, 2019, 9:15 PM

                    @Alan-Kilborn I apologize for the confusion. Followed the steps that were suggested by a coworker, so wasn’t aware of the issue. I’ll try running it that way. Thank you for your time

                    A 1 Reply Last reply Jun 21, 2019, 12:31 AM Reply Quote 0
                    • A
                      Alina Gubanova @guy038
                      last edited by Jun 20, 2019, 9:17 PM

                      @guy038 thank you so much for putting time into this and offering some useful advice! I’ll make sure to follow the steps and let you know!

                      1 Reply Last reply Reply Quote 1
                      • D
                        dail @Alan Kilborn
                        last edited by Jun 20, 2019, 9:58 PM

                        @Alan-Kilborn said:

                        @Alina-Gubanova said:

                        So these are my steps

                        You could have said that in the beginning and saved some time. You can’t run a Pythonscript that way. It isn’t going to know about the special “notepad” objects. You have to run it from the Pythonscript menu, as I said earlier.

                        My suspicion was correct :)

                        A 1 Reply Last reply Jun 21, 2019, 12:26 AM Reply Quote 2
                        • A
                          Alan Kilborn @dail
                          last edited by Jun 21, 2019, 12:26 AM

                          @dail said:

                          My suspicion was correct

                          Yes, except technically the OP was launching it from within Notepad++. But…there are degrees of within, and when you are wanting to do operations with Python tight to the Scintilla and Notepad++ cores (the original script used the notepad object), you have to be REALLY within. :)

                          • Run menu : sorta within, but mostly not because it is just telling Notepad++ to launch an external process

                          • Pythonscript menu : really within, because it is using the Python interpreter part of the plugin (and can access the editor (Scintilla) and notepad (N++) objects.

                          And @dail, I know you know all this … I write it for the edification of other readers. :)

                          1 Reply Last reply Reply Quote 6
                          • A
                            Alan Kilborn @Alina Gubanova
                            last edited by Jun 21, 2019, 12:31 AM

                            @Alina-Gubanova said:

                            I apologize for the confusion. Followed the steps that were suggested by a coworker…

                            No apology needed – it slowed you down in getting a solution you needed, is all. Didn’t hurt me/us a bit. :)

                            Never trust those shifty coworkers!! ;)

                            Write back if you need more help. If you don’t need more help, just upvote the postings here that helped you most.

                            A 1 Reply Last reply Jun 21, 2019, 2:02 PM Reply Quote 2
                            • A
                              Alina Gubanova @Alan Kilborn
                              last edited by Jun 21, 2019, 2:02 PM

                              @Alan-Kilborn Just to be very clear: I save the script that I need and then run it directly from the Pythonscript menu:
                              Plugins -> Python Scropt -> Scripts -> nameofmyscript.
                              Tried it just now, it seems like nothing is happening. It just opens a new window new1. Console is empty as well.
                              What step am I missing?

                              A 1 Reply Last reply Jun 21, 2019, 2:09 PM Reply Quote 0
                              • A
                                Alan Kilborn @Alina Gubanova
                                last edited by Jun 21, 2019, 2:09 PM

                                @Alina-Gubanova

                                I think you are on the right track for running your script now.

                                I presume you are trying to run the original script you posted? If that’s the case, I don’t see any reason why a new1 window would be opened. Perhaps you should add some more console.write() statements to the script to attempt to track control flow?

                                A 1 Reply Last reply Jun 21, 2019, 2:19 PM Reply Quote 0
                                • A
                                  Alina Gubanova @Alan Kilborn
                                  last edited by Jun 21, 2019, 2:19 PM

                                  @Alan-Kilborn Now I just get Traceback (most recent call last): File "C:\...\Notepad++\plugins\PythonScript\scripts\convertutf8.py", line 14, in <module> console.write() Boost.Python.ArgumentError: Python argument types in Console.write(Console) did not match C++ signature: write(class NppPythonScript::PythonConsole {lvalue}, class boost::python::api::object) when I added some console.write()

                                  A 1 Reply Last reply Jun 21, 2019, 2:41 PM Reply Quote 0
                                  • A
                                    Alan Kilborn @Alina Gubanova
                                    last edited by Jun 21, 2019, 2:41 PM

                                    Well, from the error message I’d assume that you put console.write() directly in your code. What I mean was to put something like console.write('got here!') at a strategic place or putting a variable name inside the parens, or…just in general some debugging techniques that one might do when programming Python without an IDE.

                                    Like @guy038, when I run your original script on some test files, it seems to do what you intend.

                                    I’m assuming you got this working script from a coworker as you hinted before. Perhaps asking him/her for help getting it going is a better path than us trying to help you from afar.

                                    A 1 Reply Last reply Jun 21, 2019, 2:43 PM Reply Quote 2
                                    • A
                                      Alina Gubanova @Alan Kilborn
                                      last edited by Jun 21, 2019, 2:43 PM

                                      @Alan-Kilborn Okay, will do! Thank you again!

                                      1 Reply Last reply Reply Quote 1
                                      • G
                                        guy038
                                        last edited by guy038 Jun 21, 2019, 7:07 PM Jun 21, 2019, 3:46 PM

                                        Hello, @alina-gubanova,

                                        I don’t really understand why you cannot get it straight. It should be practically obvious !

                                        • Create a folder, outside C\Program files..., on your configuration

                                        • Install a recent portable N++ version by extracting the archive’s contents inside this folder

                                        • Install a recent PythonScript release, by extracting the archive’s contents inside this folder

                                        • Verify that the tree structure, of this new installation folder of N++, is like in my previous post

                                        • Open Notepad++

                                        • Select the option Plugins > PythonScript > New Script

                                        • Enter a name for your script, let’s say Alina and click on the Save button

                                        => A new tab, Alina.py is, then, displayed

                                        • Paste the contents of your script, below, changing, of course, the value of the filePathSrc variable
                                        import os;
                                        import sys;
                                        import Npp;
                                        from Npp import notepad
                                        
                                        filePathSrc="X:\\xxxxxxxxxxxxt" # Path to the folder with files to convert
                                        
                                        for root, dirs, files in os.walk(filePathSrc):
                                            for fn in files:
                                                if fn[-4:] == '.txt':
                                                     notepad.open(root + "\\" + fn)
                                                     console.write(root + "\\" + fn + "\r\n")
                                                     notepad.runMenuCommand("Encoding", "Convert to UTF-8")
                                                     notepad.save()
                                        notepad.close()
                                        
                                        • Save the Alina.py Python file

                                        • Close and restart Notepad++ ( IMPORTANT as your script will be found, inside the Python files list)

                                        • Choose the option Plugins > PythonScript > Show Console, just to visualize possible errors

                                        • Then, run your script, by selecting the option Plugins > PythonScript > Scripts > Alina

                                        => The absolute paths of all the files of your folder should be displayed on the Python console

                                        Done ! Here we are ;-))

                                        Best Regards,

                                        guy038

                                        A A 2 Replies Last reply Jun 21, 2019, 4:05 PM Reply Quote 1
                                        • A
                                          Alina Gubanova @guy038
                                          last edited by Jun 21, 2019, 4:05 PM

                                          @guy038 Once again, I appreciate your time commitment and input into this issue. I too find it frustrating that I cannot get such an easy thing to work, and as you can see I obviously do not have much experience working with N++. I assure you, from what I am looking at, I have performed all of the steps that you have described correctly, but I will make sure to reinstall the newer version of n++ in case something went wrong during installation.

                                          1 Reply Last reply Reply Quote 2
                                          18 out of 32
                                          • First post
                                            18/32
                                            Last post
                                          The Community of users of the Notepad++ text editor.
                                          Powered by NodeBB | Contributors