Giter Site home page Giter Site logo

mightycreak / diffuse Goto Github PK

View Code? Open in Web Editor NEW
256.0 12.0 45.0 2.19 MB

Diffuse is a graphical tool for comparing and merging text files. It can retrieve files for comparison from Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS, Subversion, and SVK repositories.

Home Page: http://mightycreak.github.io/diffuse/

License: GNU General Public License v2.0

Python 70.95% XSLT 0.68% Shell 0.82% Inno Setup 1.47% CSS 0.04% Roff 24.89% Meson 0.78% Rust 0.37%
python gtk text-diff git

diffuse's Introduction

Diffuse

Download on Flathub

CI status Packaging status

Diffuse is a graphical tool for merging and comparing text files. Diffuse is able to compare an arbitrary number of files side-by-side and gives users the ability to manually adjust line matching and directly edit files. Diffuse can also retrieve revisions of files from several VCSs for comparison and merging.

Some key features of Diffuse:

  • Ability to compare and merge an arbitrary number of files side-by-side (n-way merges)
  • Line matching can be manually corrected by the user
  • Ability to directly edit files
  • Syntax highlighting
  • Supports several VCS: Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS and Subversion
  • Unicode support
  • Unlimited undo
  • Easy keyboard navigation

Documentation

For a more detailed documentation for users, translators and developers, see the documentation.

Contact

Discuss with us on Matrix at #diffuse:matrix.org.

Licenses

Diffuse is under the GPLv2.

The file io.github.mightycreak.Diffuse.appdata.xml.in is licensed under the FSF-AP license.

Copyright (C) 2006-2019 Derrick Moser [email protected]
Copyright (C) 2015-2023 Romain Failliot [email protected]

Icon made by @jimmac.

This repository is a fork of the original project on SourceForge, which doesn't seem to be maintained anymore: https://sourceforge.net/projects/diffuse/.

diffuse's People

Contributors

albanobattistella avatar alopatindev avatar bongochong avatar davefx avatar dscherger avatar eile avatar eson57 avatar freddii avatar grozin avatar hugoholgersson avatar krlmlr avatar likema avatar mightycreak avatar norwayfun avatar oscfdezdz avatar philipp91 avatar tneele avatar uffejakobsen avatar vistaus avatar yakushabb avatar yuriiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

diffuse's Issues

Feature: a way to save/load a comparison

I am using Diffuse for a three way comparison and I have two reasons for wanting to be able to save the way I have told the tool how to align various lines.
One is that I want to send it to a colleague, to collaborate.
Another is that I need to reboot my system and don't want to lose my research into how these versions compare (alignments).

I suppose it would be even better if Diffuse could figure out alignments more accurately. Being able to tell it which lines are a match is an advantage over Meld, though.

installing beta with existing previous version

I'm on Ubuntu Studio 20.04 and I had installed Diffuse from the master branch 25 days ago.
I downloaded the zip file for the beta and tried to install it like I did before.

Performing install with:
    destdir=/
    prefix=/usr/local/
    sysconfdir=/etc/
    examplesdir=/etc/
    mandir=/usr/local/share/man/
    pythonbin=/usr/bin/env python
Installing /usr/local/bin/diffuse
Traceback (most recent call last):
  File "./install.py", line 230, in <module>
    processFiles(install, os.path.join(destdir, prefix[1:]), 'src/usr/', {
  File "./install.py", line 146, in processFiles
    f = open(d, 'wb')
PermissionError: [Errno 13] Permission denied: '/usr/local/bin/diffuse'

Is it expected that the existing installation causes a problem for the new one? Do I have to remove it first?
Of course, I hit Enter too soon... I used sudo and it worked (Duh).
But it does say

gtk-update-icon-cache /usr/local/icons/hicolor
gtk-update-icon-cache: No theme index file.
./install.py: WARNING: Failed to update documentation database with gtk-update-icon-cache.
WARNING: scrollkeeper-update is not installed

I don't know if those are related to Diffuse since there is another message that is not related, when doing the update-desktop-database part.

Add support for Rust syntax highlighting

Thanks for this awesome tool!

I've been mostly using Rust for the last few years professionally, so I'd love to have Rust highlighting support.

Here's the syntax doc, syntax highlighting implementation for vim, WIP PR and sample code:

#[derive(Clone)]
struct A<'a_bж, B> {
    x: &'a_bж B,
    z: &'static str,
}

trait Tr {}

async fn f(x: Result<(), ()>) -> Result<(), ()> {
    let _ = x?;
    Ok(())
}

async fn g() {
    f(Ok(())).await.unwrap()
}

pub fn main() -> () {
    println!("\x61\x62");
    let mut x: i32 = 1;
    let s: char = 's';
    let x: i32 = -1_322_i32;
    let x: Box<dyn Tr> = todo!();
    let zsd: usize = 123456usize;
    let фыва_1 = "asdf";
    let abra_cadabra_2 = r#"abcd"#;
    let x = 1;
    let asd = r###"sdasd sdf"###;
    let abra_cadabra_2 = r#"multiline
        string
    "#;
    let asd = r###"multiline string
        any characters '"_\/%
        abcd"###;
    return ();
}

Installation on Debian problems

On Debian you need

$ sudo apt-get install scrollkeeper

To install run:

$ sudo python2 ./install.py

as I get the following error with python3:

File "./install.py", line 90
only install/remove files; skip the post install/removal tasks""" % (app_path, options['destdir'], options['prefix'], options['sysconfdir'], options['examplesdir'], options['mandir'], options['pythonbin'])

If I type diffuse, I get:

Traceback (most recent call last):
File "/usr/local/bin/diffuse", line 120, in
import gi
ModuleNotFoundError: No module named 'gi'

So I tried

$ pip `install gi

Got error:

gtk-update-icon-cache: No theme index file.
./install.py: WARNING: Failed to update documentation database with gtk-update-icon-cache.

But the installation seemed to (at least partially) succeed.
I appear to have two versions of diffuse installed now:

$ whereis diffuse
diffuse: /usr/bin/diffuse /usr/local/bin/diffuse /usr/share/diffuse /usr/share/man/man1/diffuse.1.gz

$ python2 /usr/bin/diffuse --version
Diffuse 0.4.8
Copyright © 2006-2014 Derrick Moser
$ python2 /usr/local/bin/diffuse --version
Diffuse 0.5.0
Copyright © 2006-2014 Derrick Moser
Copyright © 2015-2016 Romain Failliot

If I type

$ python2 /usr/local/bin/diffuse

I get a version 0.50 GUI. But if I type

$ python2 /usr/bin/diffuse

I get a version 0.48 GUI.

If I type

$ python3 /usr/local/bin/diffuse
Traceback (most recent call last):
File "/usr/local/bin/diffuse", line 120, in
import gi
File "/home/greg/anaconda3/lib/python3.6/site-packages/gi/init.py", line 39
print url
^
SyntaxError: Missing parentheses in call to 'print'

If I ype

$ diffuse
Traceback (most recent call last):
File "/usr/local/bin/diffuse", line 120, in
import gi
File "/home/greg/anaconda3/lib/python3.6/site-packages/gi/init.py", line 39
print url
^
SyntaxError: Missing parentheses in call to 'print'

At this point I'm confused as print without parenthesis is a python2 problem and I think I using python3.

Many of these installation problems could be solved by a debian package, which presumable worked for the previous version. I guess I'll take a look at it, though I've been dreading having to learn that level of detail.

I have a work-around to run either version of diffuse, so I guess I'll try the new version and see if anything has changed.

VCS repo diff operations does not work in this fork of diffuse

VCS repo diff operations does not work in this fork of diffuse

This fork of diffuse seems quite broken in its current state

The only thing that seems to work is plain traditional file-to-file diffs.

All the advanced VCS repo diff stuff that made diffuse amazing compared to the other "plain file-to-file differs" seems to be broken in this fork.

So far I've encountered that "diffuse -m" and "diffuse -c " within a git repo does not at all

Steps to reproduce:

  • change dir into a git repo that has uncommitted changes to files (that are added to the git repo)
    • verify that there are uncommitted changes with git commands such as "git status" and "git diff"
  • now run "diffuse -m" to see the same (uncommitted) modifications in diffuse.

result is:

Traceback (most recent call last):
  File "src/usr/bin/diffuse", line 8507, in <module>
    funcs[mode](specs, labels, options)
  File "src/usr/bin/diffuse", line 8020, in createModifiedFileTabs
    for specs in vcs.getFolderTemplate(self.prefs, names):
  File "src/usr/bin/diffuse", line 1882, in getFolderTemplate
    for s in popenReadLines(self.root, args, prefs, 'git_bash', [0, 1]):
  File "src/usr/bin/diffuse", line 1373, in popenReadLines
    return strip_eols(splitlines(popenRead(dn, cmd, prefs, bash_pref, success_results)))
  File "src/usr/bin/diffuse", line 262, in splitlines
    j = s.find('\n', i)
TypeError: argument should be integer or bytes-like object, not 'str'
zsh: exit 1     src/usr/bin/diffuse -m

Release request (like 0.5.0-alpha.8)

Hi there!

I'd like to package your project for Void Linux, but this project guides to use releases (and not branches) for referencing code.

And 0.5.0-alpha.7 release had a bug in ruby syntax file (but is already fixed in active branch).

So can I ask you to spawn a new version (with new code & bug fixes)?

Readme is incorrect

I tried to follow the instructions in the readme

To run Diffuse from the source code, type this:
python main.py
To build Diffuse, type this:
python setup.py build

I'm on Ubuntu Studio 20.04 LTS, and I get
Screenshot_2021-11-16_17-28-07

VCS integration is broken

VCS integration is broken with the new changes

Place your current dir inside a git repo (the diffuse git repo itself will do)
Try these commands:

diffuse -c HEAD
diffuse -c some-sha-from-the-repo

None of the above commands work anymore -
I wonder if the new release was a bit too quick - unfortunately the release have already been picked up by some distributions (ArchLinux etc)

Convert build system to Meson

Right now the build/install system is homemade. Because of that, it is difficult to understand (mostly the original author can understand exactly what is does), and it can't provide as many features a more standard solution would.

As most of the open source projects are converging toward the Meson build system, I think it would be nice to do the same. It will help maintenance as well as packaging.

Here is the Meson documentation:

Some good projects using GTK, Python, and Meson:

Distribute Diffuse on Flathub

Flatpak is becoming a common packaging system across most of the main Linux distributions (Fedora, Ubuntu, Arch, ...). Having Diffuse packaged with Flatpak and distributed on Flathub would help a lot the users wanting to use or even just test Diffuse on their system.

Wrap lines

It is useful when comparing long lines, such as a long paragraph in natural languages.

design update

Following the request for including diffuse into Circle1, here are some mockups matching GNOME standards:

mockups

Feel free to share your thoughts!

Flatpak version does not work with SVN

Hi, thank you for reviving this awesome tool!

I tried out the flatpak version (0.6) but it does not seem to be able to retrieve the SVN HEAD revision of a file to compare against.
I was using:

diffuse changedFileUnderSVNVersionControl.sh

For the moment I went back to the version packaged in debian 0.4.8 as this is something I use diffuse the most, but I would be happy to help fixing this by providing information if you need.

Remove Ctrl+Shift+Left/Right

These shortcuts are too commonly used to select entire words to use it any other way.
Maybe use Ctrl+Alt+Left/Right instead.

Support for color themes

Currently the white default theme sticks out a bit if you are using a dark theme for you OS:

image

Any ideas for how this should be implemented?

Revision history

Feature

When doing a file comparison based on SCMs (e.g. git, svn, bzr, ...), it would be nice to be able to browse through the revisions/commits of the file.

Notes

  • I don't know how feasible this feature is, it would require some planning ahead in order to know which SCMs will be compatible with such feature
  • This feature was extracted from #60.

Convert to Python 3

With Fedora 24 willing to go fully Python 3, it's time to do the conversion.

diffuse-green.patch

Here is my color variant in which green is the dominant color.

I don't know what the problem is, but I have no indication that the patch is attached !

Vladimir Koković, DP senior(70),
Serbia, Belgrade, 4.December 2020

diffuse spews out lots of pygtk deprecation warnings

diffuse spews out lots of pygtk deprecation warnings on stderr

This is the result of just starting diffuse with no arguments:

# src/usr/bin/diffuse
src/usr/bin/diffuse:6646: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('swapped-panes', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (int, int))
src/usr/bin/diffuse:6647: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('num-edits-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (int, ))
src/usr/bin/diffuse:6648: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('mode-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
src/usr/bin/diffuse:6649: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('cursor-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
src/usr/bin/diffuse:6650: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('syntax-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (str, ))
src/usr/bin/diffuse:6651: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('format-changed', FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (int, int))
src/usr/bin/diffuse:8342: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('title-changed', Diffuse.FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (str, ))
src/usr/bin/diffuse:8343: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('status-changed', Diffuse.FileDiffViewer, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (str, ))
src/usr/bin/diffuse:8344: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('title-changed', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
src/usr/bin/diffuse:8345: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('open', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
src/usr/bin/diffuse:8346: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('reload', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
src/usr/bin/diffuse:8347: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('save', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
src/usr/bin/diffuse:8348: PyGIDeprecationWarning: GObject.SIGNAL_RUN_LAST is deprecated; use GObject.SignalFlags.RUN_LAST instead
  GObject.signal_new('save-as', Diffuse.FileDiffViewer.PaneHeader, GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, ())
src/usr/bin/diffuse:7423: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "type" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  Gtk.Window.__init__(self, Gtk.WindowType.TOPLEVEL)
src/usr/bin/diffuse:7432: DeprecationWarning: Gdk.Screen.width is deprecated
  self.int_state['window_x'] = max(0, (Gdk.Screen.width() - self.int_state['window_width']) / 2)
src/usr/bin/diffuse:7433: DeprecationWarning: Gdk.Screen.height is deprecated
  self.int_state['window_y'] = max(0, (Gdk.Screen.height() - self.int_state['window_height']) / 2)
src/usr/bin/diffuse:7455: DeprecationWarning: Gtk.Widget.render_icon is deprecated
  p0 = self.render_icon(Gtk.STOCK_NEW, Gtk.IconSize.LARGE_TOOLBAR)
src/usr/bin/diffuse:7466: DeprecationWarning: Gtk.IconSet.new_from_pixbuf is deprecated
  factory.add(DIFFUSE_STOCK_NEW_2WAY_MERGE, Gtk.IconSet.new_from_pixbuf(p))
src/usr/bin/diffuse:7466: DeprecationWarning: Gtk.IconFactory.add is deprecated
  factory.add(DIFFUSE_STOCK_NEW_2WAY_MERGE, Gtk.IconSet.new_from_pixbuf(p))
src/usr/bin/diffuse:7502: DeprecationWarning: Gtk.IconFactory.add_default is deprecated
  factory.add_default()
src/usr/bin/diffuse:1178: DeprecationWarning: Gtk.ImageMenuItem.new_with_mnemonic is deprecated
  item = Gtk.ImageMenuItem.new_with_mnemonic(spec[0])
src/usr/bin/diffuse:1185: DeprecationWarning: Gtk.Image.set_from_stock is deprecated
  image.set_from_stock(spec[3], Gtk.IconSize.MENU)
src/usr/bin/diffuse:1186: DeprecationWarning: Gtk.ImageMenuItem.set_image is deprecated
  item.set_image(image)
src/usr/bin/diffuse:7612: DeprecationWarning: Gtk.HBox.new is deprecated
  hbox = Gtk.HBox.new(False, 0)
src/usr/bin/diffuse:1233: DeprecationWarning: Gtk.VSeparator.new is deprecated
  separator = Gtk.VSeparator.new()
src/usr/bin/diffuse:6831: DeprecationWarning: Gtk.Misc.set_alignment is deprecated
  label.set_alignment(0, 0.5)
src/usr/bin/diffuse:2716: DeprecationWarning: Gtk.VScrollbar.new is deprecated
  self.vbar = bar = Gtk.VScrollbar.new(vadj)
src/usr/bin/diffuse:2720: DeprecationWarning: Gtk.HScrollbar.new is deprecated
  self.hbar = bar = Gtk.HScrollbar.new(hadj)
src/usr/bin/diffuse:6893: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "homogeneous, spacing" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  Gtk.Box.__init__(self, Gtk.Orientation.HORIZONTAL, 0)
src/usr/bin/diffuse:6946: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "homogeneous, spacing" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  Gtk.Box.__init__(self, Gtk.Orientation.HORIZONTAL, 0)

Simplify new version workflow

Right now, creating a new version requires a manual process where the version is replaced and the date updated in the source files, the build files and the documentation files.

It would be nice to find a way to automate all this. Possibly, the documentation is already automated, I just haven't got the time to look at the documentation generation workflow yet.

Remove lasting deprecation warnings

We've done a huge pass on a lot of deprecation warnings, but there are still 6 left that are a bit harder to fix:

/usr/local/bin/diffuse:7424: DeprecationWarning: Gtk.IconSet.new_from_pixbuf is deprecated
  factory.add(DIFFUSE_STOCK_NEW_2WAY_MERGE, Gtk.IconSet.new_from_pixbuf(p))
/usr/local/bin/diffuse:7424: DeprecationWarning: Gtk.IconFactory.add is deprecated
  factory.add(DIFFUSE_STOCK_NEW_2WAY_MERGE, Gtk.IconSet.new_from_pixbuf(p))
/usr/local/bin/diffuse:7460: DeprecationWarning: Gtk.IconFactory.add_default is deprecated
  factory.add_default()
/usr/local/bin/diffuse:1181: DeprecationWarning: Gtk.ImageMenuItem.new_with_mnemonic is deprecated
  item = Gtk.ImageMenuItem.new_with_mnemonic(spec[0])
/usr/local/bin/diffuse:1188: DeprecationWarning: Gtk.Image.set_from_stock is deprecated
  image.set_from_stock(spec[3], Gtk.IconSize.MENU)
/usr/local/bin/diffuse:1189: DeprecationWarning: Gtk.ImageMenuItem.set_image is deprecated
  item.set_image(image)

It would be nice to definitely get rid of them.

Convert to cx_Freeze

Instead of py2exe, so that it's possible to release a Mac version as well as a Windows version.

Version Control compares

I have a question and an enhancement to propose.
First, the question is about Bazaar. Since it is now Breezy, I can go in the Preferences and change the command from bzr to brz and it seems to work. But that is probably because it is a pre-existing repo with a .bzr folder. I haven't tried Diffuse on a new repo, but I would think it's looking for .bzr and not .brz. If I change the preference for the order of version control systems to check, to use brz where it had bzr, it does not recognize that there is a version control at all.

Second, the enhancement is about once you are in a compare of a file with a revision, it would be so nice to be able to switch to a different revision, just like you can load a different file. I am envisioning arrow buttons to go between revisions.

Character encoding error handling

I'm not sure of the internals of how Diffuse works, but there is something wrong with the flow when there is a character encoding problem.
I was using Meld since I needed to compare all files in a folder and one of my files showed a message that there was a character encoding problem, and subsequently, no highlighting of differences.
meld-problem

It didn't tell me where in the file though, so I opened that file in Diffuse. Unfortunately, Diffuse shows highlighting that indicates that everything is a mismatch, and no errors.
diffuse-problem

Trying to use the arrows to find the next mismatch didn't work, so I went to the bottom of the file, which is where I found some extra characters. But still, no indication why the diff highlighting isn't correct.
diffuse-end

Looking at that part of the file in Meld, the error message at least makes more sense. It looks like Meld substituted null bytes for display, and highlighted them red, where nothing else is highlighted.
meld-end

I'm not sure what the best handling of this sort of error is, but I think the Meld way was a bit more informative. Having obvious matching text shown as a difference makes me question if Diffuse is doing it right in other scenarios.

gi not found on Mac

After running the install.py script of version 0.5 on MacOS running diffuse gives:

Traceback (most recent call last):
  File "/usr/local/bin/diffuse", line 120, in <module>
    import gi
ModuleNotFoundError: No module named 'gi'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.