M plugin/__init__.py => plugin/__init__.py +4 -0
@@ 27,6 27,7 @@ import inspect
import json
import os
import os.path
+import platform
import re
import time
import unicodedata
@@ 1619,6 1620,9 @@ class AnkiConnect:
# when run inside Anki, `__name__` would be either numeric,
# or, if installed via `link.sh`, `AnkiConnectDev`
if __name__ != "plugin":
+ if platform.system() == "Windows" and anki_version == (2, 1, 50):
+ util.patch_anki_2_1_50_having_null_stdout_on_windows()
+
Edit.register_with_anki()
ac = AnkiConnect()
M plugin/util.py => plugin/util.py +8 -0
@@ 14,6 14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
+import sys
import anki
import anki.sync
@@ 83,3 84,10 @@ def setting(key):
return aqt.mw.addonManager.getConfig(__name__).get(key, DEFAULT_CONFIG[key])
except:
raise Exception('setting {} not found'.format(key))
+
+
+# see https://github.com/FooSoft/anki-connect/issues/308
+# fixed in https://github.com/ankitects/anki/commit/0b2a226d
+def patch_anki_2_1_50_having_null_stdout_on_windows():
+ if sys.stdout is None:
+ sys.stdout = open(os.devnull, "w", encoding="utf8")