No module named Npp



  • @Alina-Gubanova

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



  • @Alan-Kilborn thanks for your help anyway!



  • 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



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



  • @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



  • @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)” ?



  • @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.



  • 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



  • @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



  • @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!



  • @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 :)



  • @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. :)



  • @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.



  • @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?



  • @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?



  • @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()



  • 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.



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



  • 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



  • @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.


Log in to reply