Difference between revisions of "Extension requirements"

From Inkscape Wiki
Jump to navigation Jump to search
(Updated the status of Python)
(25 intermediate revisions by 10 users not shown)
Line 1: Line 1:
== Setting Up Effects in Inkscape ==
{{Other languages|en=Extension requirements}}
<i>For effects to work you need to be using inkscape .42 or later.</i><br>
<i>For info about what effects can do, screenshots, and how to make your own go to [http://www.ekips.org/comp/inkscape/ Aarons Site]</i><br>
<i>See also [[GettingExtensionsWorking]].</i><br>


This page is '''outdated''' and needs an overhaul. If you can help with updating the page, please contact the [https://inkscape.org/en/community/mailing-lists/ Inkscape developers mailing list, or the docs mailing list].


=== Unhide the Effects menu ===
(Only necessary in some versions of Inkscape. Between .41 and .45)


On the "Misc" tab of the "Inkscape Preferences" dialog check the box labeled "Enable script effects" (0.41+CVS onwards only)
For '''alternative information sources''', see also:


Close and reopen Inkscape
* The extensions error log in your Inkscape user configuration directory, in case an extension doesn't work. It will list missing dependencies for each extension.


* For info about how to make your own:
** go to [https://inkscape.org/en/develop/extensions/ the corresponding page on our main website]
** also take a look at these Wiki articles: [[Script_extensions | Script Extensions]], [[INX_extension_descriptor_format | INX Extension Descriptor Format]], [[Inkscape-specific_XML_attributes | Inkscape-Specific XML attributes]]


== Python Effects ==
* If you are interested in opening special file formats through extensions, see [[GettingExtensionsWorking]].
 
* More info about existing extensions can be found
** [https://inkscape.org/en/download/addons/ in our website's addon gallery]
** and in the [[Extension_repository | Extension Repository page]] of the Wiki.
 
 
 
 
== Python Extensions ==
=== on Debian GNU / Linux ===
=== on Debian GNU / Linux ===
     apt-get install python python-xml
     apt-get install python python-lxml


=== on Microsoft Windows ===
=== on Microsoft Windows ===
[[GettingEffectsWorking/Windows]] Tutorial on Getting Effects to work on Windows
From version .44 onwards, Inkscape now includes Python in the download, and has extensions <i>enabled</i> by default.
The latest stable Inkscape version includes Python 2.6.5.


=== on Mac OS X ===
=== on Mac OS X ===


Starting with version 0.46, Inkscape contains the python packages needed for the extension system. All python extensions should work out of the box. However in case you still have trouble you can install them in their regular location.
Starting with version 0.46, Inkscape contains the python packages needed for the extension system. All python extensions should work out of the box. However in case you still have trouble you can install them in their regular location.
==== Binary packages ====
# Download and open http://inkscape.modevia.com/macosx-snap/Python-packages.dmg
# Browse the disk image to find the packages corresponding to your architecture and Python version
#* Your architecture is ppc if you have a G4-G5 based Mac, i386 if you have an Intel Mac
#* By default Panther and Tiger have Python 2.3 and Leopard has Python 2.5. If you have installed a newer version of Python we also provide packages for 2.4
# Copy all the files and folder from the appropriate location to your Python site-packages directory. By default the site-packages directory is /System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages  on Panther and Tiger, /Library/Python/2.5/site-packages on Leopard. Otherwise it is somewhere in your custom install of python (/opt/local/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/ for and install of Python 2.4 via MacPorts for example)


==== Compiling from source ====
==== Compiling from source ====
Line 37: Line 38:
# download the source code for [http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103 sourceforge numpy repository] and/or [http://codespeak.net/lxml/index.html#download lxml download section]
# download the source code for [http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103 sourceforge numpy repository] and/or [http://codespeak.net/lxml/index.html#download lxml download section]
# unpack the <code>.tar.gz</code> file <pre>tar -xzf numpy***.tar.gz lxml***.tar.gz</pre>
# unpack the <code>.tar.gz</code> file <pre>tar -xzf numpy***.tar.gz lxml***.tar.gz</pre>
# for each one <code>cd<code> into the newly created directory
# for each one <code>cd</code> into the newly created directory
# build C extensions and install (the install is system wide so you need administrator privileges)<pre>sudo python setup.py install</pre>and type your password.
# build C extensions and install (the install is system wide so you need administrator privileges)<pre>sudo python setup.py install</pre>and type your password.


The packages are installed in the <code>site-packages</code> directory of your Python install. This is <code>/Library/Python/2.*/site-packages/<code> for the stock install of Python on Mac OS X.
The packages are installed in the site-packages directory of your Python install. This is /Library/Python/2.*/site-packages for the stock install of Python on Mac OS X.


== Perl Effects ==
== Perl Extensions ==
=== on Debian GNU / Linux ===
=== on Debian GNU / Linux ===
     apt-get install perl libxml-xql-perl
     apt-get install perl libxml-xql-perl
Line 59: Line 60:
      http://www.cpan.org/authors/id/T/TJ/TJMATHER/XML-XQL-0.68.tar.gz
      http://www.cpan.org/authors/id/T/TJ/TJMATHER/XML-XQL-0.68.tar.gz
         3: open command prompt and locate perl"s lib directory with:
         3: open command prompt and locate perl"s lib directory with:
      perl -e "print qq(@INC)"    (mine was C:[[/Perl/site/lib]])
      perl -e "print qq(@INC)"    (mine was C:/Perl/site/lib)
         4: unpack xml-xql archive
         4: unpack xml-xql archive
         5: copy contents of XML-XQL-*\lib\XML into C:\Perl\site\lib\XML
         5: copy contents of XML-XQL-*\lib\XML into C:\Perl\site\lib\XML
         6: copy XML-XQL-*\XQLParser\Parser.pm to C:\Perl\site\lib\XML\XQL
         6: copy XML-XQL-*\XQLParser\Parser.pm to C:\Perl\site\lib\XML\XQL


== Plugin Effects ==
== Plugin Extensions ==
I have absolutely no idea. Please record your success here. :)
 
Plugins are a special type of extension that are similar to internal extensions. They're written in C/C++ and can directly interface with Inkscape itself. However, they're linked into a separate library that is dynamically loaded at runtime.
 
While this makes them very powerful, they're also significantly harder to code and need to be compiled before being usable. Also the compiled library will be OS/platform-dependent and might not even be compatible between different versions of Inkscape on a single platform.
 
See the [https://gitlab.com/inkscape/inkscape/tree/master/src/extension/plugins/grid2 grid2 extension] for a working prototype of this extension type. If you have an Inkscape development environment set-up
* compile/link with "make grid2"
* copy the linked library (libgrid2.dll/so) and the libgrid2.inx file into the "/extensions" folder.
* run from "Render ->  Grids -> Grid2"


== What if it doesn't work? ==
== What if it doesn't work? ==
Run Inkscape from the console
Use the error messges printed to the console to diagnose the problem (very often missing dependencies)


On Windows you will have to redirect output to a text file like this: "inkscape > output.txt"
* Run Inkscape from the console
* Use the error messages printed to the console to diagnose the problem (very often missing dependencies)
* On Windows you will have to redirect output to a text file like this: "inkscape > output.txt"
* If your operating system (e.g. your Linux distro) uses a different default version of Python (or Perl, Ruby, etc.) than what is required by Inkscape extensions, please see [[Extension_Interpreters#Selecting_a_specific_interpreter_version_.28via_preferences_file.29 | Extension Interpreters]] for how to set the interpreter that Inkscape will use. The most common example of this is that the default Python version of the operating system is 3, but Inkscape requires Python2, resulting in all extensions giving an error.




[[Category:Extensions]]
[[Category:Extensions]]

Revision as of 20:49, 19 September 2019

Other languages: العربية Català Česky Deutsch English Español Français Italiano 日本語 한국어 Polski Português Português do Brasil Русский Slovenčina 中文

This page is outdated and needs an overhaul. If you can help with updating the page, please contact the Inkscape developers mailing list, or the docs mailing list.


For alternative information sources, see also:

  • The extensions error log in your Inkscape user configuration directory, in case an extension doesn't work. It will list missing dependencies for each extension.



Python Extensions

on Debian GNU / Linux

   apt-get install python python-lxml

on Microsoft Windows

From version .44 onwards, Inkscape now includes Python in the download, and has extensions enabled by default. The latest stable Inkscape version includes Python 2.6.5.

on Mac OS X

Starting with version 0.46, Inkscape contains the python packages needed for the extension system. All python extensions should work out of the box. However in case you still have trouble you can install them in their regular location.

Compiling from source

If you prefer, you can install them from source, it is really easy.

  1. download the source code for sourceforge numpy repository and/or lxml download section
  2. unpack the .tar.gz file
    tar -xzf numpy***.tar.gz lxml***.tar.gz
  3. for each one cd into the newly created directory
  4. build C extensions and install (the install is system wide so you need administrator privileges)
    sudo python setup.py install
    and type your password.

The packages are installed in the site-packages directory of your Python install. This is /Library/Python/2.*/site-packages for the stock install of Python on Mac OS X.

Perl Extensions

on Debian GNU / Linux

   apt-get install perl libxml-xql-perl

on Gentoo GNU / Linux

   emerge -a XML-XQL

on Microsoft Windows

   install ActivePerl
   install XML::XQL::DOM (perhaps like this?)
       1: install prereqs with ppm:
	    install xml-dom
	    install parse-yapp
	    install datemanip
       2: download xml-xql from:
	    http://www.cpan.org/authors/id/T/TJ/TJMATHER/XML-XQL-0.68.tar.gz
       3: open command prompt and locate perl"s lib directory with:
	    perl -e "print qq(@INC)"    (mine was C:/Perl/site/lib)
       4: unpack xml-xql archive
       5: copy contents of XML-XQL-*\lib\XML into C:\Perl\site\lib\XML
       6: copy XML-XQL-*\XQLParser\Parser.pm to C:\Perl\site\lib\XML\XQL

Plugin Extensions

Plugins are a special type of extension that are similar to internal extensions. They're written in C/C++ and can directly interface with Inkscape itself. However, they're linked into a separate library that is dynamically loaded at runtime.

While this makes them very powerful, they're also significantly harder to code and need to be compiled before being usable. Also the compiled library will be OS/platform-dependent and might not even be compatible between different versions of Inkscape on a single platform.

See the grid2 extension for a working prototype of this extension type. If you have an Inkscape development environment set-up

  • compile/link with "make grid2"
  • copy the linked library (libgrid2.dll/so) and the libgrid2.inx file into the "/extensions" folder.
  • run from "Render -> Grids -> Grid2"

What if it doesn't work?

  • Run Inkscape from the console
  • Use the error messages printed to the console to diagnose the problem (very often missing dependencies)
  • On Windows you will have to redirect output to a text file like this: "inkscape > output.txt"
  • If your operating system (e.g. your Linux distro) uses a different default version of Python (or Perl, Ruby, etc.) than what is required by Inkscape extensions, please see Extension Interpreters for how to set the interpreter that Inkscape will use. The most common example of this is that the default Python version of the operating system is 3, but Inkscape requires Python2, resulting in all extensions giving an error.