В версиях до Python 3.7 CPython имеет ограничение 255 явно переданных аргументов в вызове:
>>> def f(*args, **kwargs): pass
...
>>> exec("f({})".format(', '.join(map(str, range(256)))))
Traceback (most recent call last):
File "", line 1, in
File "", line 1
SyntaxError: more than 255 arguments
Это ограничение существует, потому что до Python 3.5 код операции CALL_FUNCTION
перегружает аргумент кода операции, чтобы кодировать как количество аргументов positional, так и ключевых слов в стеке, каждый из которых закодирован в одном байте.
Это ограничение удалено в предстоящей версии Python 3.7, см. issue # 27213 и issue # 12844 ; # 27213 переработал семейство кодов опций CALL_FUNCTION*
для производительности и простоты (часть 3.6), освободив аргумент аргумента opcode только для кодирования одного аргумента, а # 12844 удалил проверку времени компиляции, которая помешала коду с большим количеством аргументов скомпилировано.
В 3.7, с опцией EXTENDED_ARG()
opcode , теперь нет предела , сколько аргументов вы можете передать с помощью явного аргументы, за исключением того, сколько можно установить в стек (так привязано теперь к вашей памяти):
>>> import sys
>>> sys.version_info
sys.version_info(major=3, minor=7, micro=0, releaselevel='alpha', serial=2)
>>> def f(*args, **kwargs): pass
...
>>> exec("f({})".format(', '.join(map(str, range(256)))))
>>> exec("f({})".format(', '.join(map(str, range(2 ** 16)))))
Обратите внимание, что списки, кортежи и словари ограничены sys.maxsize
, поэтому, если вызываемая функция использует *args
и / или **kwargs
параметры catch-all, то эти ограничены .
Для синтаксиса *args
и **kwargs
вызова (расширения аргументов) нет ограничений, кроме тех же sys.maxint
ограничений размера для стандартных типов Python.
Это все еще проблема в выпуске Visual Studio Community 2015, выпуск 3, при создании ASP.NET Core Web Application (.NET Framework 4.5.2)
с помощью Empty ASP.NET Core Template
. Похоже, что он работает правильно при создании проекта с использованием базового шаблона веб-приложения ASP.NET.
Как упоминалось выше, сообщение вводит в заблуждение, поскольку установлены зависимости. Кажется, Visual Studio просто сообщает, что npm и зависимости не установлены. Временное исправление заключается в переопределении там, где Visual Studio ищет файл node.js, который удаляет сообщения not installed
в Visual Studio.
В Visual Studio перейдите к Tools > Options > Projects and Solutions > External Web Tools
и добавьте путь к вашей установке node.js. По умолчанию он находится в C:\Program Files\nodejs\
или C:\Program Files (x86)\nodejs\
. Переместите эту новую строку вверх или хотя бы выше строки $ (VSINSTALLDIR) \ Web \ External.
Восстановите ваши пакеты, и сообщение об ошибке должно исчезнуть.
У меня была та же проблема, и, следуя текущему ответу с наибольшим количеством голосов, добавив C:\Program Files\Nodejs
в мои пути к внешним веб-инструментам , ничего не сделал . Даже изменение порядка путей не помогло.
>npm - v
4.2.0
>node - v
v6.10.0
Технически вы можете развернуть свое дерево зависимостей в Visual Studio, чтобы в конечном итоге найти проблему, однако проще просто запустить npm list
и найти проблемного потомка.
Таким образом, поскольку fsevents
был виновником, и это была необязательная зависимость (она не используется при запуске узла с Visual Studio в архитектуре Windows), Я нашел модули, которые имели fsevents, как необязательную зависимость.
Для меня это был модуль ckokidar
, однако он был расположен в двух местах.
MYPROJECT \ node_modules \ chokidar
, а также в
MYPROJECT \ node_modules \ browser-sync \ node_modules \ chokidar
Я подозреваю, что если у вас есть gulp-watch в качестве зависимости, она также может быть там.
Итак, что я сделал для каждой из этих папок, я открыл файл project.json
и удалил все треки fsevents в них.
"dependencies": {
....
"async-each": "^1.0.0", <-- also remember to remove the trailing ',' comma for the end
"fsevents": "^1.0.0" <-- remove this
}
и
"keywords": [
...
"file", <-- remove comma
"fsevents" <-- remove
],
и удалите это полностью
"optionalDependencies": {
"fsevents": "^1.0.0"
},
Не оставляйте запятые в любом из файлов, иначе вы получите ошибку с нпм.
Наконец, щелкните правой кнопкой мыши в Visual Studio на Зависимости и запустите Restore Packages
. Теперь вы должны быть предупреждены бесплатно! Наслаждайтесь.
Откройте package.json и начните удалять пакеты по одному, пока предупреждение не исчезнет.
После удаления "webpack": "^1.12.14",
из package.json я больше не получаю предупреждение
Я последовал совету Дэвида Гласса, хотя казалось, что у меня есть проблема. Я обновил свой файл package.json, чтобы devDependencies совпал с зависимостями, и затем предупреждение исчезло.