Jika Anda memiliki pertanyaan atau ingin bantuan dan dukungan, silakan bertanya di kami
forum .
Jika Anda mengirimkan permintaan fitur, harap awali judul dengan [permintaan fitur].
Jika Anda mengirimkan laporan bug, harap isi detail berikut.
Baru-baru ini, saya menemukan PyCharm tidak dapat membuat pelengkapan otomatis untuk torch.zeros
.
PyCharm mengatakan
Cannot find reference 'zeros' in '__init__.py'
Saya menggalinya sebentar saya menemukan Type Hints
rusak.
Dari perubahan-perubahan tersebut,
https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4
https://github.com/pytorch/pytorch/wiki/Breaking-Changes-from-Variable-and-Tensor-merge
Terutama, https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4#diff -14258fce7c17ccb97b488e64373b0803R308 @colesbury
Baris ini tidak dapat menghasilkan Type Hints
untuk banyak IDE.
Awalnya, torch.zeros
berada di torch/_C/__init__.py
Tapi, itu pindah ke torch/_C/_VariableFunctions
https://Gist.github.com/kimdwkimdw/50c18b5cf72c69c2d01bb4146c8a2b5c
Ini adalah Bukti Konsep untuk bug ini.
Jika Anda melihat main.py
import T_B as torch
torch.p2() # IDE can detect `p2`
torch.p1 # IDE cannot detect `p1`
Silakan salin dan tempel output dari kami
skrip koleksi lingkungan
(atau isi daftar periksa di bawah ini secara manual).
Anda bisa mendapatkan skrip dan menjalankannya dengan:
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
Bagaimana Anda menginstal PyTorch (conda, pip, sumber):
Kasus apa pun untuk conda, pip, source.
Perintah build yang Anda gunakan (jika dikompilasi dari sumber):
poin terkait? #4568
Masalah yang sama, pycharm pada dasarnya tidak berguna saat menggunakan pytorch0.4. Hampir semuanya digarisbawahi baik karena " tidak dapat menemukan referensi " atau " tidak dapat dipanggil ".
Tidak ada pelengkapan otomatis, definisi cepat & dokumentasi cepat untuk torch.tensor
, torch.max
dan loss.backward
.
Jika ada di antara Anda yang memiliki saran tentang cara memperbaikinya, beri tahu kami!
Kedengarannya seperti fungsi pencarian PyCharm dapat ditingkatkan, tetapi saya tidak yakin apa yang dapat dilakukan dari sisi PyTorch. Menggunakan torch.tensor
sebagai contoh, help(torch.tensor)
mendapatkan dokumentasi sementara dir(torch)
menunjukkan "tensor" sebagai anggota.
@zou3519
Saya pikir di bawah ini bukan gaya kode yang baik.
for name in dir(_C._VariableFunctions):
globals()[name] = getattr(_C._VariableFunctions, name)
dari https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4
globals()[name]
bukan cara Pythonic
. Ini bukan hanya masalah untuk PyCharm, tetapi juga untuk gaya kode Python.
Saya pikir _VariableFunctions
tidak perlu menjadi Kelas.
Saya mencoba membuat PR untuk masalah ini. Apakah Anda akan mengulas? @zou3519
@kimdwkimdw Saya tidak tahu apa yang terjadi dengan global() di sana atau apa yang akan membuatnya lebih baik, tapi ya, kirimkan PR dan saya akan melihatnya :)
Kedengarannya seperti fungsi pencarian PyCharm dapat ditingkatkan, tetapi saya tidak yakin apa yang dapat dilakukan dari sisi PyTorch.
Hanya ingin mencatat bahwa saya tidak pernah mengalami masalah ini dengan paket lain di PyCharm. Itu tidak berarti PyCharm tidak boleh melakukan hal-hal yang berbeda, tetapi masalah ini tampaknya merupakan kasus yang tidak biasa.
Saya terutama mengerjakan file-file ini.
tools/autograd/gen_autograd.py
tools/autograd/templates/python_torch_functions.cpp
torch/lib/include/torch/csrc/Module.cpp
Mencoba mencari tahu apa yang berubah saat membuat ekstensi C.
Aku akan membuat PR segera.
Ada pembaruan?
Saya membuat contoh kerja di garpu saya.
Jika ada yang ingin menggunakan pelengkapan otomatis terlebih dahulu, coba di bawah ini.
git clone -b pytorch-interface https://github.com/kimdwkimdw/pytorch.git
/Users/USERNAME/Library/Caches/PyCharm*/python_stubs/
project interpreter
di PyCharmSebelum pull request
, saya perlu menambahkan lebih banyak komitmen untuk mengatur hasil.
instal gagal mengikuti deskripsi di atas.
apakah ada cara sederhana untuk menginstal?
Saya mempunyai masalah yang sama. Saya selalu menyukai pytorch dan pycharm. Sayang sekali mereka tidak bekerja sama dengan baik :(
Menantikan pembaruan.
Ini benar-benar aneh ketika saya menggunakan kode yang sama di konsol python dengan pycharm, itu normal, tetapi di editor. O__O "…
Akan meningkatkan prioritas ini karena banyak pengguna telah meminta ini... kami akan mencoba yang terbaik untuk memeriksanya lebih lanjut.
Banyak pengguna yang meminta.... Saya harus membuat permintaan tarik akhir pekan ini.
Saya menggabungkan kode saya dengan cabang master
.
Type Hints
masih hidup sekarang.
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install
Pembayaran PR - https://github.com/pytorch/pytorch/pull/8845
cc. @zou3519
@kimdwkimdw haruskah saya menginstal ulang pytorch dari sumber? Apakah ada cara mudah untuk memperbarui di platform windows?
@541435721
Ya kamu harus. Lihat https://github.com/pytorch/pytorch#install -pytorch halaman ini.
Saya tidak tahu ada cara yang lebih sederhana untuk membangunnya.
Tampaknya tidak mengubah apa pun untuk Pycharm (2018.1, dengan cache yang dibangun kembali).
Anda harus memeriksa permintaan tarik @kimdwkimdw 's, tidak pytorch menguasai. Permintaan tarik belum digabungkan ke master pytorch.
Ini adalah PR: https://github.com/pytorch/pytorch/pull/8845.
Ya, ini yang saya lakukan:
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 Anda harus menghapus rintisan python secara manual. itu tidak dapat dihapus dengan 'cache tidak valid'.
Saat Anda menyiapkan proyek, Pycharm menginisialisasi file rintisan python-nya.
Setelah Anda menghapus direktori rintisan python, mulai ulang Pycharm.
PyCharm akan membuat kembali rintisan python-nya.
Tampaknya tidak mengubah apa pun, tetapi itu mungkin pengaturan saya. Mungkin kita bisa menunggu orang lain untuk mencoba?
Anda harus menemukan direktori rintisan python. Ketika Anda mengklik obor, Anda dapat menemukan direktori rintisan.
@kimdwkimdw Saya telah menginstal ulang dan menghapus cache, tetapi tidak ada perubahan.
Anda tidak dapat menghapus PyCharm Cache melalui invalidate Caches
Di MacOS, Anda harus menghapus folder secara manual di ~/Library/Caches/PyCharm2018.1/python_stubs/
.
Ada pilihan lain. Jika Anda membuat proyek baru dan mengubah pengaturan juru bahasa Anda, PyCharm akan membuat python stubs
@541435721 @nlgranger
Inilah yang telah saya lakukan (membatalkan cache, menghentikan pycharm, rm .PyCharm2018.1/system/python_stubs/* -rf
).
BTW Saya menggunakan python 3 jika itu penting (saya melihat beberapa tes python2 di PR).
@kimdwkimdw
Saya melakukan ini sebagai panduan dan os saya adalah windows10, tetapi saya menghadapi masalah ini.
@kimdwkimdw saya bisa melakukannya! Terima kasih!
Karena orang lain mengalami masalah, saya hanya ingin mencatat bahwa perbaikan @kimdwkimdw berfungsi untuk saya. Ini dengan Python 3 di macOS. Menggunakan:
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
Saya memang menghapus rintisan saya secara manual, meskipun saya tidak tahu apakah itu diperlukan. Bagaimanapun, itu setidaknya berfungsi di sistem saya.
Namun, saya telah menemukan bahwa torch.float32
(dan tipe data lainnya) dan torch.backends.cudnn
masih belum terselesaikan oleh PyCharm (setidaknya dalam kasus saya).
@shianiawhite Poin bagus. Terima kasih. Saya pikir saya harus menambahkan lebih banyak pembaruan ke Permintaan Tarik.
@zou3519
Tidak bekerja untuk saya, meskipun saya berhasil membangun @kimdwkimdw 's PR dan secara manual menghapus python_stub
di ~/.PyCharmCE2018.1/system
.
Maaf mau tanya lagi tapi ada kabar tentang ini?
Akankah membantu membuka masalah di sini di jetbrains https://youtrack.jetbrains.com/issues/PY?q=pytorch ?
Saya mengalami masalah yang sama di Ubuntu 16.04 dan PyCharm 2017.3
Yang aneh adalah ketika saya menjalankan di konsol python, itu menunjukkan pelengkapan otomatis dengan benar.
Tetapi ketika saya menjalankan yang sama di editor itu tidak berfungsi.
Saya menggunakan python 3.6.6 dan PyTorch 0.41. Saya menginstalnya menggunakan pip dan cuda 9.2
Saya memiliki masalah yang sama di Window7 PyCharm2018, Win10 PyCharm2018, Win10 VS2017, Win10 Spyder.
dan saya mencoba menggunakan pytorch0.4.0 dan pytorch0.4.1, keduanya tidak dapat dilengkapi secara otomatis.
hanya ipython yang menunjukkan pelengkapan otomatis dengan benar.
tolong bantu aku
Saya membuka masalah di youtrack PyCharm. Mungkin mereka juga bisa membantu.
Saya telah mencoba VS2017 dan PyCharm2018.2 dengan pytorch0.4.1 di Windows 10 dan pelengkapan otomatis tidak berfungsi untuk saya.
PyTorch-0.4.1 diinstal oleh pip dengan PyCharm-2018.2, masih memiliki masalah yang sama.
akan lebih baik jika orang dapat memilih di sini https://youtrack.jetbrains.com/issue/PY-31259
jadi perbaikannya memiliki prioritas lebih tinggi
Halo!
Saya penerima tugas dari PY-31259.
PyCharm tidak menjalankan kode pengguna apa pun saat melakukan analisis statis (pengecualian adalah konsol tempat lingkungan dapat dengan mudah diselidiki). Jadi cara paling dinamis untuk mendeklarasikan atribut tidak dapat ditemukan.
@sproshev terima kasih atas balasan Anda. Bisakah Anda menjelaskan mengapa permintaan tarik @kimdwkimdw https://github.com/pytorch/pytorch/pull/8845 berfungsi?
Untuk konteks, pytorch melakukan beberapa penetapan atribut secara dinamis saat Anda mengimpornya. Permintaan tarik
Saya pikir cara paling masuk akal untuk memperbaikinya (setidaknya untuk Python 3) adalah dengan menghasilkan rintisan .pyi.
Tes cepat tampaknya menunjukkan bahwa itu akan bekerja dengan baik.
Saya sendiri bukan pengguna PyCharm, tetapi jika ada cukup banyak orang yang akan sangat senang, saya dapat melihat apakah kami dapat membuatnya dari native_functions.yaml dan teman-teman.
@t-vi Saya tidak tahu apa yang Anda bicarakan, tetapi mengingat ini terus berlanjut, harap buat file .pyi! :D
Jadi modul utama tampaknya cukup mudah:
Untuk beberapa alasan atau lainnya, hanya memiliki
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: ...
di __init__.pyi
tampaknya tidak mengizinkan PyCharm untuk menyimpulkan bahwa setelah a = randn((1,2))
, a
adalah kelas torch.Tensor
. :(
(Saya sebenarnya memiliki anotasi di kelas, tetapi hanya digunakan jika saya mengeja anotasi a : torch.Tensor = ...
)
Saya memposting pyi di sini, jika Anda ingin mencoba: https://Gist.github.com/t-vi/0d0ae013072f96f50fa11fbc2287e33b
Sekali lagi, jika Anda memiliki gagasan mengapa PyCharm tampaknya tidak mengidentifikasi tipe pengembalian, saya akan sangat berterima kasih jika Anda membagikannya.
@t-vi Solusinya juga berfungsi untuk kode VS. Terima kasih!
Terima kasih, ZongyueZhao, atas tanggapan Anda. Saya belum mencoba dengan kode VS, tetapi jika pyi berfungsi termasuk tipe pengembalian, saya akan mengirimkan tambalan untuk pembuatannya.
Terima kasih, __init__
berhasil untuk saya! Saya menggunakan conda env yang disebut "main" jadi yang saya lakukan adalah:
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
Saya tidak perlu membuat ulang cache
Mengenai mengapa itu tidak mengenali tipe pengembalian Tensor, itu ada hubungannya dengan kesalahan sintaksis dalam file. Buka file di PyCharm, dan itu menunjukkan beberapa di antaranya
Setelah saya menghapus baris dengan kesalahan, saya mendapatkan pelengkapan otomatis
Hal lain yang saya perhatikan adalah bahwa anggota kelas Tensor mengisyaratkan return -> Tensor, yang merupakan referensi melingkar, jadi itu juga tidak dikenali oleh PyCharm. Solusinya adalah melakukan -> "Tensor" alih-alih -> Tensor untuk metode kelas Tensor ( https://www.python.org/dev/peps/pep-0484/#forward-references )
Terima kasih @yaroslavvb , itulah yang saya lewatkan!
Bump untuk visibilitas. Ini sebenarnya masalah besar bagi pengguna PyCharm. Saya sedang mengevaluasi PyTorch sebagai alternatif untuk basis kode tf/keras kami dan masalah ini merupakan pemblokiran bagi kami.
Saya menggunakan pytorch 0.4.1
.
Apakah ada solusi konkret untuk ini. Saya menggunakan pip untuk menginstal pytorch. Ada begitu banyak fungsi bawaan pytorch torch.xxx
tidak dapat dikenali di pycharm.
Jika tidak bisa diperbaiki. Bisakah Anda membantu menyarankan IDE alternatif yang menyarankan semua fungsi pytorch dan membantu navigasi dalam kerangka kerja (seperti Ctrl+B untuk melompat ke definisi fungsi pytorch).
Terima kasih.
Ada yang mau ngerjain PR (@t-vi)? Saya menggunakan nightlies PyTorch sekarang dan agak sulit untuk melakukan ini setiap kali saya memutakhirkan ...
Saya secara aktif mendiskusikan hal ini dengan para pengembang inti untuk mendapatkan solusi yang baik tentang kapan dan bagaimana menghasilkan PYI selama proses pembuatan. Bagian yang sulit adalah menggabungkan informasi dari bit yang ditentukan python dengan bit dari _C
. Kami mencoba untuk mencari solusi yang baik dan saya berharap untuk memiliki PR segera, tetapi mungkin perlu putaran iterasi.
Jika Anda mencari cara untuk menetapkan prioritas saya, jangan ragu untuk menghubungi saya melalui surat.
Mengganti __init__.py bukanlah solusi yang baik. Di @t-vi's Gist , misalnya, saat menggunakan
a = torch.cat([a,b], dim=-1)
PyCharm memberikan peringatan bahwa parameter "keluar" tidak ada, tetapi parameter "keluar" bersifat opsional.
Dalam kasus lain,
x = torch.empty(10, 2)
Baris kode ini benar karena metode ini dapat menerima (*sizes, ...), tetapi PyCharm juga memperingatkan tentang parameter yang tidak valid. Dengan begitu banyak peringatan aneh, saya akhirnya memilih untuk mengabaikan "obor.*" dalam pengaturan pemeriksaan kode...
@hitvoice Terima kasih telah menunjukkan ini.
Intinya saja adalah pukulan tinju yang sangat kasar untuk mendapatkan pyi yang tepat, jadi umpan balik Anda sangat dihargai! Saya harap Anda dapat mengaktifkan kembali pemeriksaan dengan iterasi berikutnya.
Saya pikir Optional[out] seharusnya out : Optional[Tensor]=None
, bukan? Itu mudah diperbaiki.
Untuk kosong, ini sedikit lebih rumit karena kemungkinan berarti kita perlu membagi deklarasi dengan hanya satu argumen daftar untuk juga menerima varargs (saya pernah menatap kode C yang terlalu lama mengurai python args), tapi kami pasti berkomitmen untuk memiliki petunjuk tipe yang bagus.
Hai,
Saya memperbarui __init__.pyi
dan akan sangat menghargai jika Anda dapat mencobanya.
Jika menurut Anda ini bekerja secara kasar, saya akan mencari cara untuk memanggil kode (harus setelah build) dan kami memiliki (hampir) PR.
@t-vi Terlihat bagus. Sejauh ini bekerja dengan baik untuk saya.
Hanya ingin tahu, apa alasan untuk menghasilkan petunjuk fungsi yang ditentukan python (btrifact, einsum)? Saya menggunakan build malam dan itu tampaknya berfungsi untuk saya tanpa petunjuk.
@elliotwaite Dalam eksperimen (pendek) saya, saya sepertinya tidak mendapatkan pelengkapan otomatis pada hasil kecuali saya menambahkan petunjuk jenis pada mereka, yaitu pada x = einsum('ii', a); x.
dan sekarang mendapatkan metode tensor untuk x
. Juga, saya tidak yakin bagaimana memiliki pyi memengaruhi bagaimana hal-hal yang tidak termasuk dalam pyi diperlakukan. Sejauh yang saya mengerti (yang tidak terlalu bagus), itu adalah sumber kehalusan.
@t-vi Ah, begitu. Saya hanya menguji antara memasukkan file pyi sepenuhnya vs tidak. Anda benar, jika saya menyertakan file pyi dan hanya mengomentari baris petunjuk einsum, itu juga merusak pelengkapan otomatis untuk saya. Terima kasih telah menjelaskan.
@t-vi Saya mendapatkan peringatan "Parameter tidak terisi" ketika hanya meneruskan argumen tunggal ke torch.tensor().
@elliotwaite Terima kasih telah mencatat!
tensor terlalu istimewa, jadi saya mungkin perlu memasukkan tanda tangan yang tepat secara manual.
Saya akan memperbarui PR. Apakah Anda akan menemukan lebih banyak masalah ketika saya juga memperbarui intinya? (Itu cukup manual dan saya akan melakukannya jika itu membantu Anda mencobanya.)
@t-vi Saya juga mendapatkan peringatan "Argumen tak terduga" untuk torch.Tensor.view():
torch.randn(2, 2).view(1, 1, 2, 2)
Saya juga membuat skrip yang menelusuri semua dokumen dan mengeluarkan semua string "tensor.*". Kemudian saya mengujinya untuk pelengkapan otomatis. Inilah daftar yang belum dilengkapi pelengkapan otomatis. Saya menggunakan fungsi print() untuk menguji dan memastikan bahwa mereka benar-benar dapat diakses saat menjalankan skrip.
https://github.com/elliotwaite/pytorch_typehints/blob/master/no_autocomplete.py
@elliotwaite Benar, ada beberapa hal varargs untuk tensor yang hilang (saya pikir saya juga gagal untuk bertindak berdasarkan anotasi kwonly di yaml).
Gagasan menggunakan doc(string)s untuk melihat apakah anotasinya bagus (atau setidaknya memiliki peluang untuk menjadi cukup liberal) bagus, saya akan mencari untuk melakukan ini sebagai bagian dari pengujian.
pyi
stub karena setidaknya berisi informasi tipe. +1 untuk mereka.Masalahnya ada secara umum dengan semua IDE yang menggunakan Jedi sebagai backend untuk penyelesaian Python bukan? Dan solusi Anda akan bersifat umum atau spesifik untuk PyCharm dan VS Code? Saya menggunakan emacs dengan Jedi sebagai backend penyelesaian dan saya memiliki masalah yang sama. TAPI, yang menarik, Anda dapat mencoba penyelesaian di konsol IPython dan berhasil! Ia melihat semua fungsi, bagaimana mungkin?
Yah, IPython menggunakan introspeksi dinamis, dan itu selalu berhasil (hanya berfungsi setelah Anda membuat objek, jadi Anda akan dapat menyelesaikan mytensor.a
tetapi tidak mytensor.abs().m
, yang Anda dapat dengan mengetik petunjuk.
Sejauh yang saya mengerti baik VSCode dan Jupyter juga menggunakan Jedi. Rintisan (file .pyi) adalah cara "standar" untuk menambahkan informasi jenis di atas modul yang ada, tetapi belum didukung seluas yang diinginkan (dan masih ada kasus sudut, misalnya Anda tidak dapat menyatakan bahwa Anda dapat melewati elipsis ("...") ke fungsi pengindeksan). Tindakan yang tepat adalah melompat ke Jedi dan menambahkan dukungan petunjuk rintisan jenis (https://github.com/davidhalter/jedi/issues/839). Kesempatan Anda untuk menginvestasikan waktu atau uang Anda untuk membuat rantai alat Anda lebih baik!
@t-vi Terima kasih untuk terus melacak masalah ini!
Saya mengerti Stubs
adalah cara yang cukup baik untuk menyelesaikan masalah ini.
https://www.python.org/dev/peps/pep-0484/#stub -files
Namun, Docstring
s tidak dihasilkan dengan Rintisan. Bagaimana kalau menambahkan Docstring
?
@t-vi Saya tidak mengerti apa yang harus saya lakukan. Apa maksud Anda untuk meningkatkan rantai alat saya? Saya menggunakan Jedi saat ini, tetapi saya tidak begitu mengerti bagaimana bekerja dengan file rintisan itu. Ini adalah sesuatu yang harus saya tulis atau ada dalam modul dan saya harus memperbarui Jedi? Apakah ini seperti header di C++?
Dokumentasi PEP dan masalah yang Anda tautkan tidak terlalu membantu saya tentang bagaimana saya bisa mulai menggunakannya.
@kimdwkimdw Di mana Anda meletakkan docstrings sehingga semua orang akan menemukannya? (Saya tidak berpikir Anda dapat menempatkannya di PYI (?)). Jika Anda memiliki ide di mana harus meletakkannya, saya pasti akan meletakkannya di sana ...
@piojanu Jedi tampaknya memiliki cabang yang diketik, tetapi saya tidak tahu apakah itu tentang pyi secara umum. Mungkin yang terbaik untuk bertanya kepada penulis Jedi bagaimana Anda dapat membantu mewujudkan dukungan pyi.
@t-vi Saya mengerti sekarang, terima kasih.
Tanda tangan dan tipe metode yang awalnya disimpulkan dengan Docstring
di PyTorch 0.3.0 dan PR saya (https://github.com/pytorch/pytorch/pull/8845).
@t-vi
Docstrings
dapat ditambahkan di bawah setiap metode di PYI
.
Sebagian besar terletak di _torch_docs.py
Untuk komentar @sproshev , saya pikir #8845 adalah cara yang baik tidak hanya di PyCharm, tetapi juga di IDE lain karena menggunakan cara standar untuk mengimpor modul. Oleh karena itu, PyCharm dapat menghasilkan Python stubs
secara otomatis.
PyTorch's original way 0.3.0
atau #8845 menghasilkan di PyCharms, di IPython.
Jenis informasi dapat dimasukkan dalam gen_python_functions.py
atau lainnya.
Saya setuju bahwa menghasilkan file pyi
eksplisit adalah salah satu cara untuk mengatasi masalah ini. tapi mungkin bukan cara terbersih.
Masalah yang sama, pycharm pada dasarnya tidak berguna saat menggunakan pytorch0.4. Hampir semuanya digarisbawahi baik karena " tidak dapat menemukan referensi " atau " tidak dapat dipanggil ".
@nimcho Saya juga punya masalah ini. Ini kenapa?
Saya menginstal torch-nightly di Mac saya dan Pycharm tidak dapat memintanya sama sekali, meskipun dapat melompat ke sumber ketika saya Command-Click. Setelah menghapus direktori cache di folder berikut, masalahnya telah diperbaiki.
Saya masih memiliki masalah ini dengan pytorch 1.0.0. Bagaimana saya bisa mengatasi masalah ini dengan solusi di atas?
Ini memalukan ... hampir 8 bulan :-(
@ebagdasa Saya mendorong kami untuk tetap produktif dan tidak sombong. Siapa 'Anda' yang Anda maksud? Perangkat lunak produksi tidak selalu memiliki dukungan editor yang hebat, menurut pengalaman saya.
untuk memberikan konteks mengapa ini membutuhkan waktu lama untuk diperbaiki:
Terakhir, @kimdwkimdw dan @t-vi memiliki perbaikan, misalnya di https://github.com/pytorch/pytorch/pull/12500 dengan membuat petunjuk tipe eksplisit, dan setelah PR masuk, semoga kita harus memperbaiki PyCharm isu.
Dan seperti biasa, ini adalah proyek open-source, jadi jika ada di antara Anda yang bisa membantu, jangan ragu untuk melakukannya. Misalnya @kimdwkimdw dan @t-vi melakukannya di waktu luang mereka sendiri, dan tidak dibayar untuk itu, dan tidak perlu kebencian.
@ebagdasa , Anda harus meminta pengembalian dana
baiklah, itu adalah komentar kekecewaan melihat bagaimana kode saya semua disorot oleh editor. Maaf teman-teman, saya mengerti cara kerjanya. Terus berlanjut! Mungkin saatnya mencoba VSCode.
@soumith Pelengkapan otomatis VS Code juga rusak pada beberapa fungsi seperti torch.randn
Dan seperti biasa, ini adalah proyek open-source, jadi jika ada di antara Anda yang bisa membantu, jangan ragu untuk melakukannya. Misalnya @kimdwkimdw dan @t-vi melakukannya di waktu luang mereka sendiri, dan tidak dibayar untuk itu, dan tidak perlu kebencian.
Akan lebih baik tentu saja jika mereka _did_ dibayar untuk itu... mungkinkah FAIR menggunakan sesuatu seperti gitcoin untuk mendorong partisipasi melalui bounty? Tentu saja orang-orang di FAIR sudah mendapatkan kompensasi yang mahal atas kontribusi mereka, dan kebanyakan orang di sini (seperti saya) mungkin sibuk dengan pekerjaan sehari-hari mereka...
Saya sudah mencoba VS Code, Atom, dan Pycharm menggunakan pip atau conda, tetapi tidak ada yang berfungsi dengan baik untuk pelengkapan otomatis pada beberapa fungsi seperti torch.max(). IPython dan Jupyter tidak memiliki masalah ini, tetapi mereka bukan editor.
sama di sini. Mencoba PyCharm , kode VS , Spyder .. torch.cat tidak mungkin didapat , sama seperti Longtensor.
Sepanjang komentar dalam masalah ini, ini terus-menerus dianggap sebagai masalah yang terkait dengan PyCharm, dan telah disebutkan bahwa ini adalah masalah dengan cara internal PyCharm dan internal PyTorch bekerja bersama. Ini adalah kesalahan karakterisasi masalah, dan melihatnya seperti itu mungkin tidak akan mengarah pada solusi yang benar. PyCharm mengambil pendekatan yang cukup standar untuk menyelesaikan paket, dan, seperti yang telah disebutkan oleh beberapa orang lain, masalah ini bukan PyCharm yang unik. PyCharm kebetulan menjadi editor paling populer yang mengalami masalah ini dengan PyTorch. Setiap editor yang tidak menyelesaikan paket secara dinamis (untuk tujuan kecepatan) akan mengalami masalah ini. Saya pikir fakta bahwa IPython/Jupyter/etc dapat menyelesaikannya dengan benar adalah pengecualian daripada aturan. Saya hanya ingin menekankan ini agar tidak terlalu banyak fokus pada "membuatnya berfungsi dengan PyCharm" daripada "membuatnya berfungsi secara umum".
Meskipun demikian, PR ini adalah solusi "standar" yang baik, dan mungkin harus dapat menyelesaikan masalah secara umum. Bagi Anda yang mencari solusi sementara cepat, salin file rintisan itu ke dist-packages/site-packages Anda seperti yang dijelaskan dalam Gist. Tambahkan bagian lain yang hilang secara manual, dan laporkan bagian yang hilang itu untuk memastikannya ditangani.
Halo semuanya! Tambalan @t-vi telah bergabung menjadi master, jadi jika Anda memperbarui, Anda harus mendapatkan pelengkapan otomatis yang berfungsi untuk obor pada master. Selain itu, kami melakukan rintisan jenis yang dibuat dengan tangan untuk 1.0.1, jadi ketika rilis itu terjadi, pelengkapan otomatis juga akan berfungsi untuk orang-orang di rilis itu.
Jenis rintisan mungkin tidak cukup baik untuk benar-benar mengetik kode Anda dengan mypy. Kami melacak pekerjaan tindak lanjut ini di #16574, harap sampaikan jika itu memengaruhi Anda di sana. Selain itu, kami hanya memperbaiki pelengkapan otomatis pada obor; jika Anda mengalami masalah dengan pelengkapan otomatis pada modul lain (atau menurut Anda ada pengidentifikasi yang hilang pada obor), beri tahu kami dengan laporan bug.
Terima kasih atas kesabaran Anda!
hanya fyi, rilis v1.0.1 yang baru sekarang telah menyelesaikan ini, dan telah dikirimkan.
@ezyang torch.cuda
tidak ada di pyi
, misalnya saat menggunakan torch.cuda.is_available
.
Saya mendapatkan intellisense agar VSCode berfungsi sebagian pada obor 1.0.1, tetapi beberapa fungsi masih hilang, misalnya, torch.as_tensor
Saya juga mendapatkan kesalahan dan tidak ada pelengkapan otomatis untuk beberapa fungsi di PyCharm (hilang saat saya sangat membutuhkannya), dan saya rasa ini belum sepenuhnya terpecahkan.
Saya menulis program PyTorch pertama saya akhir pekan lalu jadi tidak yakin apakah saya membuat kesalahan dengan pengaturan.
@vpj sudah diperbaiki di PyTorch v1.0.1. Apa pun yang lebih rendah masih memiliki masalah. cek print(torch.__version__)
Versi 1.0.1post2
Beberapa definisi hilang dalam file __init__.pyi.
PyCharm juga tampaknya menyebabkan beberapa masalah karena gagal menyimpulkan tipe pengembalian. Misalnya, tampaknya tidak menyimpulkan bahwa nilai pengembalian torch.exp
adalah Tensor
(namun tipe pengembalian disimpulkan dengan Tensor.exp
). Meskipun tipe pengembalian didefinisikan dalam definisi metode torch.exp
.
ya, saya juga mengupgrade ke '1.0.1.post2'
dan penyelesaian otomatis sepertinya tidak berfungsi
jadi, tampaknya beberapa ruang nama masih hilang, meskipun kami telah memperbaiki masalah yang lebih besar.
Saya membuka tugas pelacakan baru untuk ini di sini: https://github.com/pytorch/pytorch/issues/16996
Saya tidak yakin tentang yang satu ini? (Apakah ini sudah diperbaiki?) Konsol berfungsi dengan baik.
(Tapi from torch.utils.data import DataLoader, Dataset
berhasil)
@yarcowang Kami terus menambahkan lebih banyak ruang nama. Ini akan bekerja cukup baik pada 1.2.0. Jika masih ada yang kurang silahkan laporkan bug.
@ezyang oke. Jadi begitu. Tampaknya bug jangka panjang.
Saya baru untuk pytorch. Terima kasih banyak, ini bekerja dengan baik untuk saya.
Halo semuanya, pergi melalui seluruh utas. Cukup sulit untuk menemukan apakah masalah tersebut teratasi atau tidak. Saya menggunakan torch1.4+cpu dan torch.tensor masih memiliki masalah peringatan. Adakah yang bisa membantu? Terima kasih
Juga masih mengalami masalah ini dengan obor.Tensor
Terima kasih atas komentarnya. Kami telah memperbaiki banyak bug petunjuk tipe kecil selama beberapa bulan terakhir; jika Anda melihat hal-hal yang tidak berfungsi pada rilis atau master terbaru, silakan buka bug untuk mereka dan kami akan memeriksanya. Terima kasih!
Hal-hal yang rusak yang saya perhatikan di versi 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 Terima kasih telah melaporkan. Bisakah Anda membuka masalah baru dengan kasing itu untuk visibilitas lebih?
@tjysdsg Terima kasih telah melaporkan. Bisakah Anda membuka masalah baru dengan kasing itu untuk visibilitas lebih?
@zou3519 Ini dia #34699, saya juga akan memperbarui masalah ini jika saya menemukan sesuatu yang baru
Komentar yang paling membantu
Akan meningkatkan prioritas ini karena banyak pengguna telah meminta ini... kami akan mencoba yang terbaik untuk memeriksanya lebih lanjut.