Ipython: Socket Error 99 untuk notebook ipython

Dibuat pada 23 Jul 2014  ·  13Komentar  ·  Sumber: ipython/ipython

Hai
ketika mencoba membuka notebook saya mendapatkan kesalahan soket 99 "Tidak dapat menetapkan alamat yang diminta". Ini terjadi setelah pembaruan sistem, meskipun Ipython hanya diperbarui dari 2.1.0-62 ke 2.1.0-63 (paket SuSE) saya memeriksa yang berikut ini tanpa keberhasilan:

  1. diperiksa apakah perangkat loopback sedang berjalan (dengan inet addr:127.0.0.1 Mask:255.0.0.0)
  2. diperiksa dengan netstat -lp jika port standar sudah ditetapkan (bukan)
  3. jalankan skrip uji kecil untuk memulai server web tornado di port 8888, itu berhasil
  4. Buat profil default dan jalankan ipython lagi
  5. Memulai ipython dengan Host eksplisit dan port (acak) (ipython notebook --init --ip='localhost' --port=49151)
  6. Mencoba adalah sebagai root
  7. Memeriksa apakah firewall tidak memblokir
  8. Memeriksa bahwa saya dapat menulis ke tmp (jika diperlukan)

Jadi saya bingung apa lagi yang bisa saya lakukan. Setiap petunjuk tentang apa lagi yang bisa saya lakukan dihargai.

Pesan pembukanya adalah
tmp/> ipython notebook --init --log-level=50 --ip='localhost' --port=49151 [15:46:39]
Traceback (panggilan terakhir terakhir):
File "/usr/bin/ipython", baris 5, di
start_ipython()
File "/usr/lib/python2.7/site-packages/IPython/ init .py", baris 120, di start_ipython
kembali launch_new_instance(argv=argv, _kwargs)File "/usr/lib/python2.7/site-packages/IPython/config/application.py", baris 563, di launch_instanceapp.initialize(argv)berkas "", baris 2, di inisialisasiFile "/usr/lib/python2.7/site-packages/IPython/config/application.py", baris 92, di catch_config_errormetode pengembalian (aplikasi, *args, *_kwargs)File "/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py", baris 320, di inisialisasisuper(TerminalIPythonApp, self).inisialisasi(argv)Berkas "", baris 2, di inisialisasiFile "/usr/lib/python2.7/site-packages/IPython/config/application.py", baris 92, di catch_config_errormetode pengembalian (aplikasi, _args, *_kwargs)File "/usr/lib/python2.7/site-packages/IPython/core/application.py", baris 381, di inisialisasiself.parse_command_line(argv)File "/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py", baris 315, di parse_command_linekembalikan super(TerminalIPythonApp, self).parse_command_line(argv)berkas "", baris 2, di parse_command_lineFile "/usr/lib/python2.7/site-packages/IPython/config/application.py", baris 92, di catch_config_errormetode pengembalian (aplikasi, _args, *_kwargs)File "/usr/lib/python2.7/site-packages/IPython/config/application.py", baris 475, di parse_command_linekembalikan self.initialize_subcommand(subc, subargv)berkas "", baris 2, di initialize_subcommandFile "/usr/lib/python2.7/site-packages/IPython/config/application.py", baris 92, di catch_config_errormetode pengembalian (aplikasi, _args, *_kwargs)File "/usr/lib/python2.7/site-packages/IPython/config/application.py", baris 413, di initialize_subcommandself.subapp.initialize(argv)berkas "", baris 2, di inisialisasiFile "/usr/lib/python2.7/site-packages/IPython/config/application.py", baris 92, di catch_config_errormetode pengembalian (aplikasi, _args, *_kwargs)File "/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py", baris 745, di inisialisasiself.init_webapp()File "/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py", baris 632, di init_webappself.http_server.listen(port, self.ip)File "/usr/lib64/python2.7/site-packages/tornado/tcpserver.py", baris 116, di dengarkansockets = bind_sockets(port, address=address)File "/usr/lib64/python2.7/site-packages/tornado/netutil.py", baris 103, di bind_socketssock.bind(sockaddr)File "/usr/lib64/python2.7/socket.py", baris 224, dalam metodekembali getattr(self._sock,nama)( argumen)
kesalahan: [Errno 99] Tidak dapat menetapkan alamat yang diminta

Konfigurasi sistem saya adalah
{'commit_hash': '681fd77',
'commit_source': 'instalasi',
'default_encoding': 'UTF-8',
'ipython_path': '/usr/lib/python2.7/site-packages/IPython',
'ipython_version': '2.1.0',
'os_name': 'posix',
'platform': 'Linux-3.11.10-17-default-x86_64-with-SuSE-13.1-x86_64',
'sys_executable': '/usr/bin/python',
'sys_platform': 'linux2',
'sys_version': '2.7.6 (default, 21 Nov 2013, 15:55:38) [GCC]'}

Versi tornado saya adalah
Nama: python-tornado/Versi: 3.2.1-2.1/Arch: x86_64

Komentar yang paling membantu

Dan bagaimana jika Anda mencoba --ip=127.0.0.1 ?

Semua 13 komentar

Dan bagaimana jika Anda mencoba --ip=127.0.0.1 ?

Hai

Itu berhasil (seharusnya memikirkan itu). Saya memasukkannya ke ipython_notebook_config.py saya. Saya bertanya-tanya mengapa perilaku itu berubah ...
Jadi dari sisi saya, saya bisa menutup masalah ini. Hanya jika seseorang dapat mengubah pesan kesalahan menjadi sesuatu yang bermakna yang menunjukkan solusi, saya akan membiarkan masalah ini tetap terbuka. Tapi mungkin masalah ini terlalu spesifik...

Terima kasih banyak atas jawaban cepatnya!

Menyalin penjelasan dari #6191:

IPython mendengarkan di localhost secara default. 127.0.0.1 harus berperilaku sama, dan tidak di hampir semua kasus. Beberapa kasus di mana hal ini dapat ditangani secara berbeda termasuk proxy lokal dan/atau firewall (biasanya karena pengawasan konfigurasi, daripada perbedaan perilaku yang disengaja). Kami telah menemukan kasus di mana localhost berfungsi dan 127 tidak dan sebaliknya, jadi tidak ada jawaban yang benar-benar tepat untuk default.

Apakah Anda memiliki konfigurasi firewall dan/atau proxy? Jika demikian, apakah Anda mengontrol konfigurasinya? Saya akan menjelaskan perilaku ini sebagai bug dalam pengaturan jaringan Anda, tetapi mungkin bukan salah satu yang Anda izinkan untuk memperbaikinya.

Terima kasih, menentukan 127.0.0.1 memecahkan kesalahan soket untuk saya juga

Jika Anda menggunakannya di server cloud, Anda dapat menggunakan --ip=0.0.0.0 .

Terima kasih telah menjaga masalah ini, saya menyiapkan server notebook di server cloud. Dan menentukan ip pendengar sebagai "0.0.0.0" memecahkan masalah yang sama ini.

Terima kasih, saya memiliki masalah yang sama :)

terima kasih itu menyelesaikannya!

Untuk orang yang berasal dari hasil pencarian: periksa /etc/hosts untuk kesalahan ketik dan konfigurasi ipv6. localhost seharusnya hanya menunjuk ke ipv4 loopback ( 127.0.0.1 ), bukan ke ipv6 ( ::1 ). Ini dapat merusak barang-barang lain, tidak hanya jupyter.

Misalnya, ini salah:
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
ini bagus:
::1 localhost6 localhost6.localdomain6

https://github.com/codenvy/codenvy/issues/2427#issuecomment -397347888
https://bugzilla.redhat.com/show_bug.cgi?id=211800#c4

@mlazowik Terima kasih banyak! Ini menyelesaikan masalah saya - saya ingin tahu berapa banyak orang lain yang memiliki masalah yang sama tetapi telah memilih solusi 127.0.0.1. Ini adalah solusi yang benar (memastikan tabel pencarian nama host sudah benar). Dalam contoh saya (Linux Arch), /etc/hosts saya "dikirim" sebagai berikut:

127.0.0.1       localhost.localdomain    localhost
::1             localhost.localdomain    localhost

Dan saya mengoreksinya sebagai berikut:

127.0.0.1       localhost.localdomain    localhost
::1             localhost6.localdomain6  localhost6

Jika Anda menggunakannya di server cloud, Anda dapat menggunakan --ip=0.0.0.0 .

Bagi saya (di mac) hanya --ip=0.0.0.0 yang berfungsi dengan buruh pelabuhan lokal yang berjalan.

Untuk kasus saya, ini karena /etc/hosts untuk alamat loopback ::1 yang digandakan di IPv6.
Setelah mengomentari alamat loopback kedua ::1, kesalahannya hilang.

Screenshot from 2019-12-14 16-32-13

@mlazowik Saya memiliki masalah yang sama dengan solusi akhirnya yang sama, tetapi merasa menarik bahwa man /etc/hosts memiliki ini dalam contoh mereka, yang membuat saya tidak mengetahui masalah saya (karena otoritas yang diduga merekomendasikan apa yang Anda katakan bermasalah):

# The following lines are desirable for IPv4 capable hosts
127.0.0.1       localhost
127.0.1.1       thishost.mydomain.org  thishost

[...]

# The following lines are desirable for IPv6 capable hosts
::1             localhost ip6-localhost ip6-loopback

Saya menjatuhkan localhost dari entri ::1 (menjaga dua lainnya) dan semuanya baik-baik saja. Saya juga diasumsikan ip6 adalah ipv6 kata kunci, tapi mungkin ip6-foo dan foo6 keduanya baik-baik saja (misalnya hanya beberapa bentuk nama mangling vs ipv4 setara)?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat