Pytorch: Неисправные `Type Hints` в PyTorch 0.4.0, связанные с IDE (например, PyCharm)

Созданный на 5 мая 2018  ·  106Комментарии  ·  Источник: pytorch/pytorch

Если у вас есть вопрос или вам нужна помощь и поддержка, задавайте их на нашем
форумы .

Если вы отправляете запрос функции, пожалуйста, поставьте перед заголовком [запрос функции].
Если вы отправляете отчет об ошибке, заполните следующие данные.

Описание проблемы

Недавно я понял, что PyCharm не может выполнять автозаполнение для torch.zeros .

PyCharm говорит

Cannot find reference 'zeros' in '__init__.py'

Покопался, нашел сломанный Type Hints .

Из этих изменений
https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4
https://github.com/pytorch/pytorch/wiki/Breaking-Changes-from-Variable-and-Tensor-merge

В частности, https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4#diff -14258fce7c17ccb97b488e64373b0803R308 @colesbury
Эта строка не может принести Type Hints для многих IDE.

Первоначально torch.zeros находился в torch/_C/__init__.py
Но он переместился на torch/_C/_VariableFunctions

Пример кода

https://gist.github.com/kimdwkimdw/50c18b5cf72c69c2d01bb4146c8a2b5c
Это Proof of Concept для этой ошибки.

Если вы посмотрите на main.py

import T_B as torch

torch.p2()  # IDE can detect `p2`
torch.p1    # IDE cannot detect `p1`

Системная информация

Скопируйте и вставьте вывод из нашего
сценарий сбора среды
(или заполните приведенный ниже контрольный список вручную).

Вы можете получить сценарий и запустить его с помощью:

wget https://raw.githubusercontent.com/pytorch/pytorch/master/torch/utils/collect_env.py
# For security purposes, please check the contents of collect_env.py before running it.
python collect_env.py
  • PyTorch или Caffe2:
  • Как вы установили PyTorch (conda, pip, source):
    Любой случай для conda, pip, source.

  • Команда сборки, которую вы использовали (при компиляции из исходников):

  • ОС: Любая
  • Версия PyTorch: 0.4.0
  • Версия Python: 3.6.5
  • Версия CUDA / cuDNN:.
  • Модели и конфигурация графического процессора:.
  • Версия GCC (при компиляции из исходников):.
  • Версия CMake:.
  • Версии любых других соответствующих библиотек :.
medium priority (this tag is deprecated)

Самый полезный комментарий

Мы собираемся повысить приоритет этого, потому что многие пользователи этого просили ... мы постараемся изучить это подробнее.

Все 106 Комментарий

любой связанный момент? # 4568

Та же проблема, pycharm практически бесполезен при использовании pytorch0.4. Почти все подчеркнуто либо потому, что « не могу найти ссылку », либо « не вызывается ».

torch

Для torch.tensor , torch.max и loss.backward нет автоматического завершения, быстрого определения и быстрой документации.

  • ОС: Linux (64-битная Fedora 27 с Gnome).
  • Версия PyTorch: 0.4.0.
  • Как вы установили PyTorch (conda, pip, source): pip3.
  • Версия Python: 3.6.5.
  • Я использую CPU (без CUDA).

Если у кого-то из вас есть предложения, как это исправить, сообщите нам об этом!

Похоже, поиск функций PyCharm можно улучшить, но я не уверен, что можно сделать со стороны PyTorch. Используя torch.tensor в качестве примера, help(torch.tensor) получает документацию, а dir(torch) показывает "тензор" как член.

@ zou3519
Я подумал, что ниже не очень хороший стиль кода.

for name in dir(_C._VariableFunctions):
    globals()[name] = getattr(_C._VariableFunctions, name)

из https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4

globals()[name] - это не способ Pythonic . Это проблема не только для PyCharm, но и для стиля кода Python.

Я думал, что _VariableFunctions не обязательно должно быть Class.

Я пытаюсь устроить пиар этого номера. Вы бы сделали обзор? @ zou3519

@kimdwkimdw Я не знаю, что там происходит с global () или что могло бы улучшить его, но да, пожалуйста, отправьте PR, и я посмотрю на него :)

Похоже, поиск функций PyCharm можно улучшить, но я не уверен, что можно сделать со стороны PyTorch.

Просто хотел отметить, что я никогда не сталкивался с этой проблемой ни с одним другим пакетом в PyCharm. Это не значит, что PyCharm не должен делать что-то по-другому, но эта проблема кажется необычной.

Я в основном работаю над этими файлами.

tools/autograd/gen_autograd.py
tools/autograd/templates/python_torch_functions.cpp

torch/lib/include/torch/csrc/Module.cpp

Пытаемся выяснить, что изменилось при генерации расширений C.
Скоро сделаю пиар.

Любые обновления?

Я сделал рабочий пример на своей вилке.

Если кто-то хочет сначала использовать автозаполнение, попробуйте ниже.

1. git clone

git clone -b pytorch-interface https://github.com/kimdwkimdw/pytorch.git

2. Установите PyTorch.

3. Очистить кеш в PyCharm

  • обычно кеши находятся в /Users/USERNAME/Library/Caches/PyCharm*/python_stubs/
  • проверьте свой project interpreter в PyCharm

Перед pull request мне нужно добавить больше коммитов, чтобы упорядочить результаты.

установить не удалось, следуя описанию выше.
есть ли простой способ установки?

У меня такая же проблема. Я всегда любил питорч и пичарм. Жаль, что они не работают вместе: (
Жду обновлений.

Это действительно странно, когда я использовал тот же код в консоли python с pycharm, это нормально, но в редакторе. O__O "…

Мы собираемся повысить приоритет этого, потому что многие пользователи этого просили ... мы постараемся изучить это подробнее.

Многие пользователи просят .... Я должен сделать пул-реквест в эти выходные.

Я объединил свой код с текущей веткой master .

Type Hints сейчас живы.

MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install

PR кассы - https://github.com/pytorch/pytorch/pull/8845

cc. @ zou3519

@kimdwkimdw должен ли я переустановить pytorch из исходного кода? Есть ли простой способ продления на платформе Windows?

@ 541435721
Да, ты должен. Посетите https://github.com/pytorch/pytorch#install -pytorch эту страницу.
Я не знаю, есть ли более простой способ его построить.

Кажется, это ничего не меняет для Pycharm (2018.1, с перестроенными кешами).

Вы должны проверить запрос тянуть @kimdwkimdw «s, а не pytorch мастер. Запрос на перенос еще не был объединен с мастером pytorch.

Это PR: https://github.com/pytorch/pytorch/pull/8845.

Да, вот что я сделал:

git remote add kimdwkimdw https://github.com/kimdwkimdw/pytorch.git
git fetch kimdwkimdw
git checkout --track kimdwkimdw/interface-0
git submodule update --init
CC=gcc-5 CXX=g++-5 CFLAGS="-march=native -O2" CXXFLAGS="-march=native -O2" python setup.py build
python setup.py install  --optimize=1 --skip-build 

@nlgranger вы должны удалить заглушки Python вручную. он не может быть удален с помощью «недействительного кеша».

Когда вы настраиваете проект, Pycharm инициализирует свои файлы-заглушки python.

После удаления каталога-заглушки python перезапустите Pycharm.

PyCharm повторно сгенерирует свою заглушку Python.

Кажется, ничего не меняет, но это может быть моя установка. Может, подождем, пока кто-нибудь попробует?

Вы должны найти каталог с заглушками Python. Когда вы нажимаете фонарик, вы можете найти каталог с заглушками.

@kimdwkimdw Я переустановил и удалил кеш, но без изменений.

image
Вы не можете удалить PyCharm Cache через этот invalidate Caches

В MacOS вы должны вручную удалить папки в ~/Library/Caches/PyCharm2018.1/python_stubs/ .

Есть еще один вариант. Если вы создадите новый проект и измените настройки интерпретатора, PyCharm сделает его python stubs

@ 541435721 @nlgranger

Это именно то, что я сделал (аннулирование кеша, остановка pycharm, rm .PyCharm2018.1/system/python_stubs/* -rf ).
Кстати, я использую python 3 в случае, если это имеет значение (я вижу некоторые тесты python2 в PR).

@kimdwkimdw
Я сделал это как руководство, и моя ОС - windows10, но я столкнулся с этой проблемой.

@kimdwkimdw Я могу это сделать! благодарю вас!

Поскольку у других были проблемы, я просто хотел отметить, что исправление @kimdwkimdw у меня работает. Это с Python 3 в macOS. С использованием:

source path/to/my/venv/bin/activate
git clone https://github.com/kimdwkimdw/pytorch.git
cd pytorch
git checkout interface-0
git submodule update --init
MACOSX_DEPLOYMENT_TARGET=10.13 CC=clang CXX=clang++ python setup.py install

Я удалил свои заглушки вручную, хотя не знаю, нужно ли это. В любом случае, в моей системе он хоть работает.

Однако я обнаружил, что и torch.float32 (и другие типы данных), и torch.backends.cudnn все еще не разрешены PyCharm (по крайней мере, в моем случае).

@shianiawhite Хорошее замечание. Спасибо. Думаю, мне следует добавить больше обновлений в запросы на слияние.

@ zou3519

У меня не получилось, хотя я успешно построил PR @kimdwkimdw и вручную удалил python_stub в ~/.PyCharmCE2018.1/system .

Извините, что спрашиваю еще раз, но есть новости по этому поводу?
Поможет ли это открыть проблему здесь, на сайте jetbrains https://youtrack.jetbrains.com/issues/PY?q=pytorch ?

У меня такая же проблема в Ubuntu 16.04 и PyCharm 2017.3

Странно то, что когда я запускаю консоль Python, автозаполнение отображается правильно.
working_in_console

Но когда я запускаю то же самое в редакторе, это не работает.
not_working_in_editor

Я использую Python 3.6.6 и PyTorch 0.41. Я установил его с помощью pip и cuda 9.2

У меня такая же проблема в Window7 PyCharm2018, Win10 PyCharm2018, Win10 VS2017, Win10 Spyder.
и я пытаюсь использовать pytorch0.4.0 и pytorch0.4.1, оба не могут быть автозаполнены.
только ipython правильно показывает автозаполнение.
пожалуйста, помогите мне

Я открыл проблему в PyCharm youtrack. Может, они тоже могут помочь.

https://youtrack.jetbrains.com/issue/PY-31259

Я пробовал VS2017 и PyCharm2018.2 с pytorch0.4.1 в Windows 10, и у меня не работает автозаполнение.

PyTorch-0.4.1, установленный pip с PyCharm-2018.2, по-прежнему имеет те же проблемы.

было бы хорошо, если бы люди могли голосовать здесь https://youtrack.jetbrains.com/issue/PY-31259
поэтому исправление имеет более высокий приоритет

Привет!
Я правопреемник PY-31259.
PyCharm не запускает какой-либо пользовательский код при выполнении статического анализа (исключение - это консоль, на которой можно легко исследовать среду). Таким образом, большинство динамических способов объявления атрибутов невозможно обнаружить.

@sproshev спасибо за ответ. Не могли бы вы пролить свет на то, почему работает запрос на вытягивание https://github.com/pytorch/pytorch/pull/8845 ?

Для контекста pytorch выполняет динамическое присвоение атрибутов при его импорте. Запрос на вытягивание

Я думаю, что наиболее разумный способ исправить это (по крайней мере, для Python 3) - создать заглушку .pyi.
Быстрый тест, кажется, показывает, что это сработает.
Я сам не являюсь пользователем PyCharm, но если найдется достаточно людей, которые будут очень счастливы, я могу посмотреть, сможем ли мы сгенерировать его из native_functions.yaml и друзей.

@ t-vi Я понятия не имею, о чем вы говорите, но, учитывая, что это просто затягивается, пожалуйста, сгенерируйте .pyi! : D

Итак, основной модуль кажется достаточно простым:
image

По той или иной причине, просто имея

class Tensor: ...

<strong i="6">@overload</strong>
def randn(size: Tuple[int, ...], *, out: Optional[torch.Tensor], dtype: dtype=None, layout: layout=torch.strided, device: Union[device, str, None]=None, requires_grad: bool=False) -> Tensor: ...

в __init__.pyi , похоже, не позволяет PyCharm сделать вывод, что после a = randn((1,2)) a имеет класс torch.Tensor . :(
(На самом деле у меня тоже есть аннотации в классе, но они используются, только если я пишу аннотацию a : torch.Tensor = ... )

Я разместил pyi здесь, если вы хотите попробовать: https://gist.github.com/t-vi/0d0ae013072f96f50fa11fbc2287e33b

Опять же, если у вас есть идея, почему PyCharm не определяет тип возвращаемого значения, я был бы очень благодарен, если бы вы поделились этим.

@ t-vi Решение также работает для кода VS. Спасибо!

Спасибо, ZongyueZhao, за ваш отзыв. Я еще не пробовал использовать код VS, но если pyi работает, включая возвращаемые типы, я отправлю патч для его генерации.

Спасибо, что __init__ у меня сработало! Я использую conda env под названием "main", поэтому я сделал следующее:

pushd /Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/torch
rm __init__.py
wget https://gist.githubusercontent.com/t-vi/0d0ae013072f96f50fa11fbc2287e33b/raw/e0e3878fa612c5a4557ec76c011fd5f9453ff0e8/__init__.py
popd

Мне не нужно было восстанавливать кеш

Что касается того, почему он не распознает возвращаемый тип Tensor, это связано с синтаксическими ошибками в файле. Откройте файл в PyCharm, и он покажет несколько из них.

screenshot 2018-10-05 16 33 51

Как только я удалил строки с ошибками, у меня появилось автозаполнение
screenshot 2018-10-05 16 35 40

Еще я заметил, что подсказки членов класса Tensor возвращаются -> Tensor, что является циклической ссылкой, поэтому PyCharm также не распознает ее. Решение - сделать -> «Tensor» вместо -> Tensor для методов класса Tensor (https://www.python.org/dev/peps/pep-0484/#forward-references)

Спасибо @yaroslavvb , это именно то, чего мне не хватало!

Удар для видимости. На самом деле это очень важно для пользователей PyCharm. Я оценивал PyTorch как альтернативу нашей кодовой базе tf / keras, и эта проблема нам мешает.

Я использую pytorch 0.4.1 .

Есть ли для этого какое-то конкретное решение. Я использую pip для установки pytorch. Существует так много встроенных функций pytorch torch.xxx неузнаваемых в pycharm.

Если это не может быть исправлено. Можете ли вы помочь предложить альтернативную среду IDE, которая предлагает все функции pytorch и помогает в навигации в рамках (например, Ctrl + B для перехода к определению функции pytorch).

Спасибо.

Кто-нибудь хочет сделать пиар (@ t-vi)? Сейчас я использую ночные клубы PyTorch, и это немного затруднительно делать это каждый раз, когда я обновляюсь ...

Я активно обсуждаю это с основными разработчиками, чтобы иметь хорошее решение о том, когда и как генерировать PYI в процессе сборки. Сложная часть - объединить информацию из битов, определенных в Python, с информацией из битов _C . Мы пытаемся найти хорошее решение, и я надеюсь, что в ближайшее время у нас будет PR, но, вероятно, потребуется раунд повторения.

Если вы ищете способ расставить приоритеты, не стесняйтесь обращаться ко мне по почте.

Замена __init__.py - не лучшее решение. В сущности @ t-vi, например, при использовании

a = torch.cat([a,b], dim=-1)

PyCharm выдает предупреждение о том, что параметр «out» отсутствует, но параметр «out» является необязательным.
В другом случае

x = torch.empty(10, 2)

Эта строка кода верна, потому что метод может принимать (* sizes, ...), но PyCharm также предупреждает о недопустимых параметрах. С таким количеством странных предупреждений я наконец решил игнорировать "torch. *" В настройках проверки кода ...

@hitvoice Спасибо, что указали на это.
Суть только в том, чтобы получить правильный пии, поэтому мы очень ценим ваши отзывы! Надеюсь, вы сможете вернуться к проверке в следующей итерации.

Я думаю, что Optional [out] должен быть out : Optional[Tensor]=None , верно? Это легко исправить.
Для пустого это немного сложнее, поскольку это, вероятно, означает, что нам нужно разделить объявления только с одним аргументом списка, чтобы также принимать varargs (однажды я смотрел на код C, слишком долго разбирающий аргументы python), но мы, безусловно, стремится иметь отличные подсказки типа.

Привет,
Я обновил __init__.pyi и был бы признателен, если бы вы попробовали его.

  • Мне гораздо больше нравится метод генерации, поэтому, несмотря на то, что он находится за кулисами, я думаю, что есть хороший прогресс в создании PR.
  • Я также генерирую подсказки для некоторых функций, определенных в Python (btrifact, einsum), но я не добавил их все.
  • Думаю, я исправил (в коде генерации) недостатки, на которые указали @yaroslavvb и @hitvoice .

Если вы думаете, что это примерно работает, я поищу способы вызвать код (он должен быть после сборки), и у нас есть (почти) PR.

@ t-vi Выглядит хорошо. Пока что у меня все работает хорошо.

Просто любопытно, в чем причина генерации подсказок функций, определенных в Python (btrifact, einsum)? Я использую ночную сборку, и мне кажется, что они работают без подсказок.

@elliotwaite В моем (коротком) эксперименте у меня не было автозаполнения результатов, если я не добавляю к ним подсказки типа, то есть на x = einsum('ii', a); x. а теперь получаю тензорные методы для x . Кроме того, я не уверен, как наличие pyi влияет на то, как обрабатываются вещи, не включенные в pyi. Насколько я понимаю (что не очень хорошо), это источник тонкостей.

@ t-vi А, понятно. Я только тестировал между включением файла pyi полностью и без. Вы правы, если я включу файл pyi и закомментирую только строку подсказки einsum, это также нарушит автозаполнение для меня. Спасибо за объяснение.

@ t-vi Я получаю предупреждение «Параметры незаполнены», когда передаю только один аргумент в torch.tensor ().

image

@elliotwaite Спасибо за внимание!
тензор слишком особенный, поэтому мне, вероятно, придется добавить правильную подпись вручную.
Я обновлю PR. Вы обнаружите больше проблем, когда я также обновлю суть? (Это красивое руководство, и я сделаю это, если вам это поможет.)

@ t-vi Я также получаю предупреждение «Неожиданный аргумент» для torch.Tensor.view ():
torch.randn(2, 2).view(1, 1, 2, 2)

Я также сделал скрипт, который просматривал все документы и вытаскивал все строки "tensor. *". Потом протестировал их на автозаполнение. Вот список тех, где автозаполнение еще не работает. Я использовал функцию print (), чтобы проверить и убедиться, что они действительно доступны при запуске скрипта.
https://github.com/elliotwaite/pytorch_typehints/blob/master/no_autocomplete.py

@elliotwaite Правильно, для тензоров не хватает некоторых varargs (я думаю, что я также не могу действовать с аннотациями kwonly в yaml).
Идея использования doc (string) s для проверки того, хороши ли аннотации (или, по крайней мере, есть ли шанс быть достаточно либеральными), прекрасна, я постараюсь сделать это в рамках тестирования.

8845 подтвержден со стороны PyCharm. Но в целом лучше иметь заглушки pyi потому что они хотя бы содержат информацию о типе. +1 для них.

Проблема существует в целом со всеми IDE, которые используют Jedi в качестве бэкэнда для завершения Python, верно? И ваше решение будет тоже общим или специфическим для PyCharm и VS Code? Я использую emacs с Jedi в качестве бэкэнда завершения, и у меня такая же проблема. НО, что интересно, вы можете попробовать автодополнение в консоли IPython, и оно работает! Он видит все функции, как это возможно?

Что ж, IPython использует динамический самоанализ, и это всегда работает (он работает только после того, mytensor.a но не mytensor.abs().m , что вы можете с типом подсказки.
Насколько я понимаю, и VSCode, и Jupyter также используют Jedi. Заглушки (файлы .pyi) - это «стандартный» способ добавления информации о типе поверх существующих модулей, но они еще не поддерживаются так широко, как хотелось бы (и все еще есть угловые случаи, например, вы не можете выразить, что вы можете передать многоточие ("...") для функций индексации). Правильный курс действий - перейти к Jedi и добавить поддержку заглушки подсказки типа (https://github.com/davidhalter/jedi/issues/839). Ваш шанс инвестировать свое время или деньги, чтобы улучшить свою цепочку инструментов!

@ t-vi Спасибо, что отслеживаете эту проблему!

Я понимаю, что Stubs - неплохой способ решить эту проблему.
https://www.python.org/dev/peps/pep-0484/#stub -files

Однако Docstring s не создаются с помощью заглушек. Как насчет добавления Docstring ?

@ t-vi Я не понимаю, что мне делать. Что вы имеете в виду, чтобы улучшить мой набор инструментов? В настоящее время я использую Jedi, но я не очень понимаю, как работать с этими файлами-заглушками. Это то, что я должен написать, или он присутствует в модулях, и мне нужно обновить Jedi? Это как заголовки в C ++?
Документация по PEP и проблема, которую вы связали, не очень полезны для меня, когда я могу начать их использовать.

@kimdwkimdw Куда вы помещаете строки документации, чтобы каждый
У @piojanu Jedi, похоже, есть типизированная ветка, но я не знаю, относится ли это к pyi в целом. Наверное, лучше всего спросить автора-джедая, как вы можете помочь реализовать поддержку pyi.

@ t-vi Теперь я понял, спасибо.

Первоначально предполагаемая подпись метода и типы с Docstring в PyTorch 0.3.0 и мой PR (https://github.com/pytorch/pytorch/pull/8845).
image

@ t-vi
Docstrings можно добавить под каждым методом в PYI .
image

Большинство из них находится в _torch_docs.py

Что касается комментария Python stubs .

PyTorch's original way 0.3.0 или # 8845 делает в PyCharms, в IPython.
Информация о типе может быть включена в gen_python_functions.py или иначе.

Я согласен с тем, что создание явных файлов pyi является одним из способов решения этой проблемы. но, возможно, не самым чистым способом.

Та же проблема, pycharm практически бесполезен при использовании pytorch0.4. Почти все подчеркнуто либо потому, что « не могу найти ссылку », либо « не вызывается ».

torch

@nimcho У меня тоже такая проблема, вот почему?

Я устанавливаю torch-nightly на свой Mac, и Pycharm вообще не может запрашивать его, хотя может перейти к исходному тексту, когда я нажимаю Command-Click. После удаления каталогов кеша в следующих папках проблема устранена.

  • / Пользователи / ИМЯ ПОЛЬЗОВАТЕЛЯ / Библиотека / Кеши / PyCharm ** / python_stubs
  • / Пользователи / ИМЯ ПОЛЬЗОВАТЕЛЯ / Библиотека / Кеши / PyCharm ** / LocalHistory
  • / Users / USERNAME / Library / Caches / PyCharm ** / caches
  • / Пользователи / ИМЯ ПОЛЬЗОВАТЕЛЯ / Библиотека / Кеши / PyCharm ** / tmp
  • / Пользователи / ИМЯ ПОЛЬЗОВАТЕЛЯ / Библиотека / Кеши / PyCharm ** / userHistory

У меня все еще есть эта проблема с pytorch 1.0.0. Как я могу решить эту проблему с помощью приведенных выше решений?

Смущает ... почти 8 месяцев :-(

@ebagdasa Я бы посоветовал нам оставаться продуктивными, а не язвительными. Кого вы имеете в виду? По моему опыту, производственное программное обеспечение не всегда имеет отличную поддержку редактора.

чтобы объяснить, почему это так долго исправляли:

  • никто из основных разработчиков не использует PyCharm, поэтому сначала было трудно понять проблему
  • как только мы начали его изучать, это была проблема кросс-проекта, то есть отчасти это была часть типов CPython, поддерживаемых PyCharm для автозаполнения, а отчасти - то, что PyTorch мог сделать, чтобы обойти ограничения PyCharm в этой настройке.

    • для этого требовалось сочетание знания внутреннего устройства PyCharm и внутреннего устройства PyTorch. Надеюсь, вы понимаете всю сложность этого

    • в качестве контраргумента Microsoft VSCode + PyTorch отлично работает для автозаполнения, как и автозаполнение IPython. Итак, @ebagdasa, я не думаю, что ваш комментарий актуален.

Наконец, у @kimdwkimdw и @ t-vi есть исправления, например, в https://github.com/pytorch/pytorch/pull/12500, путем генерации явных подсказок типов, и как только этот PR появится, мы, надеюсь, исправим PyCharm проблема.

И, как всегда, это проект с открытым исходным кодом, поэтому, если кто-то из вас может помочь с этим, пожалуйста, сделайте это. Например, @kimdwkimdw и @ t-vi делали это в свободное время, и им не платили за это, и им не нужна ненависть.

@ebagdasa , попроси вернуть деньги

хорошо, это был комментарий из-за разочарования, глядя, как мой код выделяется редактором. Простите, ребята, я понимаю, как это работает. Продолжать идти! Может быть, пора попробовать VSCode.

@soumith Автозаполнение VS Code также не работает для некоторых функций, таких как torch.randn

1547171211663

И, как всегда, это проект с открытым исходным кодом, поэтому, если кто-то из вас может помочь с этим, пожалуйста, сделайте это. Например, @kimdwkimdw и @ t-vi делали это в свободное время, и им не платили за это, и им не нужна ненависть.

Было бы неплохо, конечно, если бы они _доплатили_ за это ... можно ли для FAIR использовать что-то вроде gitcoin для поощрения участия за вознаграждение? Конечно, люди в FAIR уже получают солидную компенсацию за свой вклад, и большинство людей здесь (например, я), вероятно, заняты своей повседневной работой ...

Я пробовал VS Code, Atom и Pycharm, используя pip или conda, но ни один из них не работает нормально для автозаполнения для некоторых функций, таких как torch.max (). IPython и Jupyter не имеют этой проблемы, но они не редакторы.

тут то же самое. Пробовал PyCharm, VS code, Spyder .. torch.cat получить невозможно, то же, что и Longtensor.

В комментариях к этому выпуску это постоянно объявлялось проблемой, связанной с PyCharm, и упоминалось, что это проблема того, как внутренние компоненты PyCharm и внутренние компоненты PyTorch работают вместе. Это неверная характеристика проблемы, и ее рассмотрение как таковое, вероятно, не приведет к правильному решению. PyCharm использует довольно стандартный подход к разрешению пакетов, и, как было упомянуто несколькими другими, эта проблема не уникальна для PyCharm. PyCharm оказался самым популярным редактором, который сталкивается с этой проблемой с PyTorch. Любой редактор, который не разрешает пакет динамически (для повышения скорости), будет иметь эту проблему. Я думаю, что тот факт, что IPython / Jupyter / etc может разрешить это правильно, является скорее исключением, чем правилом. Я просто хотел подчеркнуть это, чтобы не уделять слишком много внимания тому, чтобы «заставить его работать с PyCharm», а не «заставить его работать в целом».

При этом заглушки , над которыми идет работа в этом PR, являются хорошим «стандартным» решением и, вероятно, смогут решить проблему в целом. Для тех из вас, кто ищет быстрое временное решение, скопируйте этот файл-заглушку в свои dist-packages / site-packages, как описано в gist. Вручную добавьте любые другие недостающие части и сообщите об этих недостающих частях, чтобы убедиться, что они будут обработаны.

Всем привет! Патч @t-vi слился с мастером, поэтому, если вы обновите, вы должны получить работающее автозаполнение для torch на мастере. Кроме того, мы зафиксировали сгенерированную вручную заглушку типа для 1.0.1, поэтому, когда этот выпуск произойдет, автозаполнение также будет работать для людей в этом выпуске.

Заглушка типа, вероятно, недостаточно хороша для фактической проверки типов вашего кода с помощью mypy. Мы отслеживаем эту дополнительную работу в # 16574, пожалуйста, сообщите, если это затронет вас там. Также мы исправили автозаполнение только на факеле; Если у вас возникли проблемы с автозаполнением в других модулях (или вы думаете, что на Torch отсутствуют идентификаторы), сообщите нам об этом с отчетом об ошибке.

Спасибо за ваше терпение!

Просто к сведению, в новой версии v1.0.1 эта проблема решена, и она отправлена.

@ezyang torch.cuda отсутствует в pyi , например, при использовании torch.cuda.is_available .

Я получаю intellisense для VSCode для частичной работы на torch 1.0.1, но некоторые функции все еще отсутствуют, например, torch.as_tensor

У меня также были ошибки и не было автозаполнения для некоторых функций в PyCharm (он отсутствовал, когда мне это было нужно больше всего), и я не думаю, что это полностью решено.

На прошлых выходных я написал свою первую программу PyTorch, поэтому не уверен, что ошибся с настройкой.

@vpj это было исправлено в PyTorch v1.0.1. Все, что ниже, по-прежнему имеет проблему. чек print(torch.__version__)

Версия 1.0.1post2

pytorch_missing_defs

Некоторые определения отсутствуют в файле __init __. Pyi.

PyCharm также, похоже, вызывает некоторые проблемы, потому что не может определить возвращаемые типы. Например, похоже, не следует, что возвращаемое значение torch.exp является Tensor (однако тип возврата определяется с помощью Tensor.exp ). Хотя тип возвращаемого значения определен в определении метода torch.exp .

да, я тоже обновился до 1.0.1.post2
и автозаполнение не работает

image

Итак, очевидно, что несколько пространств имен все еще отсутствуют, хотя мы исправили более серьезную проблему.

Я открыл для этого новую задачу отслеживания здесь: https://github.com/pytorch/pytorch/issues/16996

Я не совсем уверен в этом? (Это исправлено?) Консоль работает нормально.
(Но from torch.utils.data import DataLoader, Dataset работает)
untitled2____Documents_python_untitled2__-_____main_py

@yarcowang Мы постоянно добавляем все больше и больше пространств имен. Это должно хорошо работать в 1.2.0. Если чего-то по-прежнему не хватает, сообщите об ошибках.

@ezyang ОК. Понятно. Кажется, долговременная ошибка.

Я новичок на pytorch. Большое спасибо, у меня это работает.

Всем привет, прошел всю ветку. Решена проблема или нет, определить довольно сложно. Я использую torch1.4 + cpu, а torch.tensor все еще имеет проблемы с предупреждениями. Кто-нибудь может помочь? Спасибо

Также по-прежнему возникает эта проблема с torch.Tensor

Спасибо за комментарии. За последние несколько месяцев мы исправили множество мелких ошибок с подсказками; Если вы заметили, что что-то не работает в последней версии или мастере, пожалуйста, откройте для них ошибки, и мы посмотрим. Спасибо!

Сломанные вещи, которые я заметил в версии 1.4.0:

torch.cuda.manual_seed # manual_seed not hinting
torch.cuda.manual_seed_all # manual_seed_all not hinting
torch.utils # cannot find utils
torch.backends # cannot find backends
torch.optim.lr_scheduler._LRScheduler.step() # argument "epoch" unfilled, while it's optional
torch.Tensor(4, 1) # unexpected arguments & argument "requires_grad" unfilled
torch.optim.Adadelta # cannot find Adadelta
torch.nn.TransformerEncoderLayer # cannot find TransformerEncoderLayer
torch.nn.TransformerEncoder # cannot find TransformerEncoder

@tjysdsg Спасибо за сообщение. Не могли бы вы открыть новый выпуск с этими делами для большей наглядности?

@tjysdsg Спасибо за сообщение. Не могли бы вы открыть новый выпуск с этими делами для большей наглядности?

@ zou3519 Вот он # 34699, тоже обновлю выпуск, если найду что-нибудь новое

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

negrinho picture negrinho  ·  3Комментарии

kdexd picture kdexd  ·  3Комментарии

SeparateReality picture SeparateReality  ·  3Комментарии

NgPDat picture NgPDat  ·  3Комментарии

eliabruni picture eliabruni  ·  3Комментарии