Ipython: ImportError: Tidak ada modul bernama shutil_get_terminal_size

Dibuat pada 28 Jul 2016  ·  81Komentar  ·  Sumber: ipython/ipython

Pembaruan dari @carreau :
Membuka kembali, menandai 5.4 kita harus vendor shutil_get_terminal_size.


Setelah instal ipython sudo apt-get install ipython-notebook , ipython muncul error, sebagai berikut:

jiangyuping@Lenovo :~$ ipython
Traceback (panggilan terakhir terakhir):
File "/usr/local/bin/ipython", baris 4, di
dari IPython impor start_ipython
File "/usr/local/lib/python2.7/dist-packages/IPython/ init .py", baris 48, di
dari .core.aplikasi impor Aplikasi
File "/usr/local/lib/python2.7/dist-packages/IPython/core/application.py", baris 25, di
dari rilis impor IPython.core, crashhandler
File "/usr/local/lib/python2.7/dist-packages/IPython/core/crashhandler.py", baris 28, di
dari IPython.core impor ultratb
File "/usr/local/lib/python2.7/dist-packages/IPython/core/ultratb.py", baris 128, di
dari IPython.utils.terminal impor get_terminal_size
File "/usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py", baris 22, di
dari backports.shutil_get_terminal_size impor get_terminal_size sebagai _get_terminal_size
ImportError: Tidak ada modul bernama shutil_get_terminal_size

Komentar yang paling membantu

@oschow _should_ ini berfungsi secara umum:

# start by making sure pip, setuptools are up to date:
pip install --upgrade setuptools pip
# uninstall if pip thinks you already have it but don't seem to:
pip uninstall backports.shutil_get_terminal_size
# install it again with out definitely-up-to-date pip:
pip install --upgrade backports.shutil_get_terminal_size

Semua 81 komentar

Anda memiliki salinan IPython yang lebih baru yang diinstal di luar apt, dan itu memerlukan paket backports.shutil_get_terminal_size . Gunakan pip untuk menginstalnya.

@takluyver Setelah pip install ipython , muncul

jiangyuping@Lenovo :~/ipython$ pip install ipython
Persyaratan sudah terpenuhi (gunakan --upgrade untuk memutakhirkan): ipython di /usr/local/lib/python2.7/dist-packages

kemudian, ipython , muncul

jiangyuping@Lenovo :~/ipython$ ipython
Traceback (panggilan terakhir terakhir):
File "/usr/local/bin/ipython", baris 4, di
dari IPython impor start_ipython
File "/home/jiangyuping/ipython/IPython/ init .py", baris 48, di
dari .core.aplikasi impor Aplikasi
File "/home/jiangyuping/ipython/IPython/core/application.py", baris 25, di
dari rilis impor IPython.core, crashhandler
File "/home/jiangyuping/ipython/IPython/core/crashhandler.py", baris 28, di
dari IPython.core impor ultratb
File "/home/jiangyuping/ipython/IPython/core/ultratb.py", baris 128, di
dari IPython.utils.terminal impor get_terminal_size
File "/home/jiangyuping/ipython/IPython/utils/terminal.py", baris 22, di
dari backports.shutil_get_terminal_size impor get_terminal_size sebagai _get_terminal_size
ImportError: Tidak ada modul bernama shutil_get_terminal_size

Maksud saya:

pip install backports.shutil_get_terminal_size

Namun, jika itu tidak menjadikannya sebagai ketergantungan IPython, itu mungkin berarti Anda memiliki pip versi lama. Untuk meningkatkannya:

pip install --upgrade setuptools pip

Terima kasih, berhasil diinstal.

Saya mencoba banyak hal. Yang terakhir yang dipecahkan adalah memperbarui setuptools . Saya juga memperbarui pip dan menginstal ulang ipython, dll.

Terima kasih! Ini tidak berhasil untuk saya. Tapi itu memberi saya ide... Saya melakukan instalasi pip --upgrade dengan file whl dari backports.shutil_get_terminal_size

Sebelum itu hanya melakukan instalasi pip menghasilkan "persyaratan sudah terpenuhi" dll.
Sekarang saya dapat menjalankan GraphLab Create dari Turi :)

@jnault Saya mengalami masalah yang sama karena saya mencoba menginstal GraphLab Create Turi. Perintah persis apa yang Anda gunakan?

Saya tidak ingat persisnya, tapi saya ingat itu cukup mudah. Langkah saya:
1) Google mencari file itu dengan ekstensi .whl dan
2) pencarian google Cara Memasang File Whl
hm. ok yang terlihat snarky atau sesuatu. Saya tulus dan berusaha membantu. Tapi itulah yang saya lakukan secara harfiah. Cukup yakin file tersebut berasal dari pypi. Saya menduga file whl mungkin dapat menginstal Apa pun, jadi saya memastikan itu berasal dari sumber yang memiliki reputasi baik.
Saya menduga perintahnya adalah: pip install --upgrade backports.shutil_get_terminal_size.whl

@oschow _should_ ini berfungsi secara umum:

# start by making sure pip, setuptools are up to date:
pip install --upgrade setuptools pip
# uninstall if pip thinks you already have it but don't seem to:
pip uninstall backports.shutil_get_terminal_size
# install it again with out definitely-up-to-date pip:
pip install --upgrade backports.shutil_get_terminal_size

^ Minrk memiliki saran yang lebih baik.
Minrk, Anda menulis "jika pip mengira Anda sudah memilikinya tetapi sepertinya tidak". Jadi, mungkinkah file tersebut dijadwalkan pada instalasi python awal tetapi kemudian terlewatkan? Jadi itu terdaftar sebagai hadiah tetapi sebenarnya tidak?

Saya memiliki masalah yang sama ketika mencoba menginstal Graphlab Create. solusi minrk memperbaikinya untuk saya juga.

@minrk memiliki solusi yang berfungsi untuk saya, hanya pencopotan pemasangan diikuti oleh pemasangan yang berhasil untuk saya.
Inilah yang saya lakukan.

hapus instalan jika pip mengira Anda sudah memilikinya tetapi sepertinya tidak:

pip uninstall backports.shutil_get_terminal_size

instal lagi tanpa pip yang pasti-up-to-date:

pip install --upgrade backports.shutil_get_terminal_size

hapus <path-to>/Python/2.7/site-packages/backports/__init__.*

@bevice Lalu?

Sejauh ini saya belum dapat memperbaiki dengan saran apa pun di utas ini atau utas lainnya.

Jika saya lari

$ python -s
>>> from backports.shutil_get_terminal_size import get_terminal_size
>>> get_terminal_size()
terminal_size(columns=112, lines=40)

berhasil. Tetapi menjalankan ipython atau jupyter notebook memberi saya kesalahan yang sama, yaitu tidak menemukan shutil_get_terminal_size

Saya pikir ini berarti Anda memiliki paket backports.<something> lain yang diinstal di suatu tempat yang telah mengacaukan mesin paket namespace. Anda mungkin perlu menemukannya dan mencopot pemasangannya. Coba pip list untuk melihat semua paket yang terinstal.

@takluyver Terima kasih atas balasan cepatnya.

Inilah yang saya temukan:

backports-abc (0.4)
backports.shutil-get-terminal-size (1.0.0)
backports.ssl-match-hostname (3.4.0.2)

Apa yang bisa saya lakukan sekarang?

Copot pemasangan backports.ssl-match-hostname dan backports.shutil-get-terminal-size dan pasang kembali.

Apakah saya harus "memulai ulang" anaconda atau sesuatu agar perubahan diterapkan? Menghapus instalasi kedua paket yang Anda sebutkan dan menginstalnya kembali tidak berhasil.

Tidak, tidak ada restart. Hanya untuk memastikan, setelah Anda mencopot pemasangannya, coba hapus instalannya lagi. Ulangi sampai tidak dapat menemukan apa pun untuk dihapus. Terkadang ada salinan di tempat yang berbeda.

Jika itu masih tidak berhasil, coba hapus instalan backports.ssl-match-hostname dan biarkan terinstal (setidaknya sampai Anda menemukan yang membutuhkannya...)

Baiklah. Saya mencoba semua yang Anda katakan, namun tidak ada yang berhasil. Apa saja pilihan saya? Masalahnya dimulai ketika saya menginstal pymc3. Hal lainnya adalah, saya mengubah beberapa skrip untuk menambahkan beberapa modul ke kotak alat nipype. Haruskah saya menghapus semuanya dan menginstalnya lagi? Ini akan menjadi pilihan terakhir, saya harap.

Apa yang Anda dapatkan dengan mencoba ini dengan Python yang sama dengan yang Anda coba jalankan IPython dengan:

import backports
print(backports)

Saya sudah menjalankannya dengan backports diinstal:

>>> import backports
>>> print(backports)
<module 'backports' from '/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/

Kemudian hapus instalannya, dan jalankan lagi:

>>> import backports
>>> print(backports)
<module 'backports' (built-in)>

Jadi rupanya saya memiliki beberapa paket bawaan di suatu tempat yang mengacaukan segalanya. Tapi saya tidak tahu bagaimana menemukan mereka. Bahkan jika saya menemukannya, saya mungkin tidak dapat mengubah apa pun karena saya tidak memiliki izin root.

Apakah ada hal lain di folder yang ditunjukkan kepada Anda di sana ( /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/ )?

Tidak, sekarang setelah dihapus, folder tersebut hilang sepenuhnya. Seperti foldernya
../site-packages/backports.shutil-get-terminal-size-1.0.0 yang dulu ada saat diinstal.

Bisakah Anda memeriksa backports.__path__ dengan Python?

Tanpa backport terpasang:
['/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']

Itu direktori yang sama seperti sebelumnya? Apakah itu pasti hilang? Saya tidak mengerti bagaimana bisa menemukan jalan itu jika tidak ada apa-apa di sana.

Saya mencari semua kemungkinan backport di direktori anaconda2_serverwide. Saya tidak yakin apa maksud semua ini.
Inilah yang saya temukan:

file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/future-0.15.2-py27_0/lib/python2.7/site-packages/future/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/configparser-3.5.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/ssl_match_hostname-3.4.0.2-py27_1/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/get_terminal_size-1.0.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/future/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_bak
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/get_terminal_size-1.0.0-py27_0/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/ssl_match_hostname-3.4.0.2-py27_1/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0.tar.bz2
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1.tar.bz2
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc-0.4-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc-0.4-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports-1.0-py27_0.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports_abc-0.4-py27_0.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports.shutil_get_terminal_size-1.0.0-py27_1.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc.py
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc.py
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc.pyc
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc.pyc

Sudahkah Anda me-restart Python setelah menghapus backports ? Jika tidak, dapatkah Anda memulai ulang Python dan memeriksa backports.__path__ lagi? Saya tidak tahu cara apa pun yang dapat mengidentifikasi jalur itu jika tidak ada file di sana.

Bagaimana cara me-restart python?

Saya juga sudah mencoba yang berikut ini:

> conda list | grep backports
backports                 1.0                      py27_0  
backports.shutil_get_terminal_size 1.0.0                    py27_1    conda-forge
backports_abc             0.4                      py27_0  

Jadi saya menggunakan conda untuk menghapus backports.shutil_get_terminal_size:
> conda uninstall backports.shutil_get_terminal_size

Ketika saya sekarang mencoba mengimpor backports.shutil_get_terminal_size dengan python tidak menemukannya. Jadi saya menghapus ipython dan jupyter dan menginstal ulang ipython melalui conda yang juga menginstal jupyter dan backports.shutil_get_terminal_size. Namun, itu _still_ tidak berfungsi! Aku bingung.

Saya kemudian menghapus instalasi melalui conda dan menginstalnya kembali melalui pip. Ini _masih_ tidak berfungsi ....

Bagaimana cara me-restart python?

Tutup ( exit() ) lalu mulai lagi.

Diperiksa untuk backport:

> conda list | grep backports
backports                 1.0                      py27_0  
backports.shutil_get_terminal_size 1.0.0                    py27_1    conda-forge
backports_abc             0.4                      py27_0  

Jalankan python setelah memulai ulang:

>>> import backports
>>> backports.shutil_get_terminal_size
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'shutil_get_terminal_size'

Mencoba memutakhirkannya:

> pip install --upgrade backports.shutil_get_terminal_size
Requirement already up-to-date: backports.shutil_get_terminal_size in /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages

Saya tidak mengerti. Apa lagi yang bisa saya lakukan? Bisakah saya mengedit terminal.py´ untuk mengarahkannya ke arah yang benar?

Jika Anda menghapus semua paket backport, mulai ulang Python dan periksa:

import backports
backports.__path__

Mendapatkan apa?

>>> import backports
>>> backports.__path__
['/home/raid2/mihai/.local/lib/python2.7/site-packages/backports', '/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']

Apakah ada sesuatu yang diinstal di direktori sebelumnya (yang ada di bawah /home/raid2 )?

Itulah direktori tempat paket python dan ipython seluruh sistem disimpan. Saya tidak menggunakannya, karena saya menggunakan instalasi anaconda lokal. Dan itu tidak boleh mengganggu. Sejujurnya, di bawah direktori /home/raid2... tidak ada paket backports.shutil_get_terminal_size.

Ketika saya menjalankan instalasi seluruh sistem (yang memiliki versi ipython yang lebih lama) itu berjalan dengan baik. Tetapi ketika saya memulai lingkungan saya dengan instal anaconda yang lebih baru dengan
export PATH="/nobackup/archimedes1/Glad/anaconda2_serverwide/bin:$PATH" , gagal menemukan fungsi ukuran jendela.

Saya telah membuat skrip untuk mencoba membantu men-debug ini. Bisakah Anda menjalankannya dan memposting hasilnya?

https://Gist.github.com/takluyver/73cf4e7e7cff4d95f3b23ea80d59bcab

Baiklah!!!1

Inilah yang saya lakukan untuk membuatnya bekerja.
Menghapus ipython dan jupyter dan backports.shutil_get_window_size dengan conda dan pip:

conda uninstall jupyter ipython backports.shutil_get_window_size
pip uninstall jupyter ipython backports.shutil_get_window_size

Saya memastikan tidak ada yang tersisa dari paket apa pun. Kemudian saya menginstal ulang hanya ipython dengan conda:

> conda install ipython
Fetching package metadata .........
Solving package specifications: ..........

Package plan for installation in environment //nobackup/archimedes1/Glad/anaconda2_serverwide:

The following NEW packages will be INSTALLED:

    backports:                          1.0-py27_0              
    backports.shutil_get_terminal_size: 1.0.0-py27_1 conda-forge
    ipython:                            5.1.0-py27_1 conda-forge

Proceed ([y]/n)? y

Extracting packages ...
[      COMPLETE      ]|###################################################################################| 100%
Linking packages ...
[      COMPLETE      ]|###################################################################################| 100%
mihai<strong i="11">@archimedes</strong>:/tmp > ipython

Dan sekarang berhasil!!! Terima kasih atas waktu Anda yang murah hati @takluyver !

Inilah output dari skrip Anda:

In [2]: run debug_namespace_pkg.py
mod: <module 'backports' from '/home/raid2/mihai/.local/lib/python2.7/site-packages/backports/__init__.pyc'>

backports.__path__ = ['/home/raid2/mihai/.local/lib/python2.7/site-packages/backports', '//nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']

Found /home/raid2/mihai/.local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)


Found //nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Oke, senang Anda berhasil. Output dari skrip sekarang menunjukkan hal-hal sebagaimana mestinya; semoga skripnya bermanfaat jika seseorang memiliki masalah ini di masa mendatang.

Saya juga memiliki masalah yang sama. Mencoba semuanya dari awal, mencopot dan menginstal semuanya. Juga jalankan skrip yang Anda bagikan di atas -
Berikut outputnya:

aranyo-139-61:Desktop shiva$ python debug_namespace_pkg.py
mod: <module 'backports' (built-in)>

backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']

Found /usr/local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)


Found /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports
No __init__.py found
Found /usr/local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Bisakah Anda membantu saya dengan ini? Saya tidak ingin menggunakan conda.

Terima kasih!

Apakah ada sesuatu di /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports ? Bisakah Anda mencoba menghapus/mengganti namanya?

Apakah ada sesuatu di /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports? Bisakah Anda mencoba menghapus/mengganti namanya?

Mencoba, Masih masalah yang sama.

Saya membuat perubahan pada skrip debugging , dapatkah Anda mencoba mendapatkannya lagi dan menjalankannya kembali.

Berikut output-

mod: <module 'backports' (built-in)>

backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']

-- Found /usr/local/lib/python2.7/site-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)


-- Found /usr/local/lib/python2.7/site-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Sudahkah Anda memulai ulang Python sejak menghapus/mengganti nama direktori itu? Itu masih menemukannya entah bagaimana.

Saya menjalankan skrip menggunakan perintah "python debug_namespace_pkg.py". Dan saya me-restart terminal sebelum melakukannya.

Dan /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports pasti tidak ada? Seperti sebelumnya, saya tidak mengerti bagaimana mendapatkan referensi ke folder yang tampaknya tidak ada.

Ya, saya menamainya di lokasi yang Anda tentukan. Apakah Anda yakin tidak bermaksud /usr/local/lib/python2.7/site-packages/backports ?

Tidak, itu yang perlu ditemukan. Yang di bawah /Users/shiva tampaknya menghalanginya. Baris ini menunjukkan bahwa ia masih menemukannya:

backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']

Tapi saya tidak mengerti bagaimana itu mungkin setelah Anda menghapusnya. :bingung:

Aha, ada sesuatu yang tidak pernah saya ketahui: file .pkg . Bisakah Anda mencari file bernama backports.pkg ?

( backports.pkg mungkin akan berada di salah satu dari direktori site-packages tersebut, meskipun mungkin berada di tempat lain di sistem Anda)

Saya tidak dapat menemukan backports.pkg di mana pun. Saya menggunakan find ./* -name backports.pkg di folder root.

Akhirnya, itu berhasil.

Mengganti nama folder itu tidak berfungsi, menghapusnya berhasil. Terima kasih banyak atas bantuan Anda :)

Aneh, saya tidak mengerti mengapa menghapusnya akan berbeda dari hanya mengganti namanya. Senang Anda membuatnya bekerja.

Saya mengalami masalah serupa dan mencopot/memasang pip sepertinya tidak membantu. Ini adalah output dari skrip debugging Anda (karena python test.py ):

mod: <module 'backports' (built-in)>

backports.__path__ = ['/home/ihincks/.local/lib/python2.7/site-packages/backports']

-- Found /usr/local/lib/python2.7/dist-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Saya mempunyai:

$ ls /home/ihincks/.local/lib/python2.7/site-packages/ | grep backports
backports_abc-0.5.dist-info
backports_abc.py
backports_abc.pyc
backports.shutil_get_terminal_size-1.0.0

Saya akhirnya berhasil dengan metode hack berikut. Buka (di linux) /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py dan ubah barisnya

from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size

ke

from shutil_backports import get_terminal_size as _get_terminal_size

Hal yang sama lagi - entah bagaimana menemukan direktori yang sepertinya tidak ada di sana. Bisakah Anda mencari file backport.pkg juga? Saya akan menambahkan itu ke skrip.

Output dari skrip terbaru:

mod: <module 'backports' (built-in)>

backports.__path__ = ['/home/ihincks/.local/lib/python2.7/site-packages/backports']

-- Found /usr/local/lib/python2.7/dist-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Itu menyebalkan; Saya tidak tahu bagaimana menemukan jalur pertama ( /home/ihincks/... ).

Apakah ada hal lain di /home/ihincks/.local/lib/python2.7/site-packages/ yang dapat menjelaskan mengapa ia menemukan backports di sana?

Saya tidak tahu persis apa yang harus dicari. Ini semua yang ada di /home/ihincks/.local/lib/python2.7/site-packages/ :

backports_abc-0.5.dist-info
backports_abc.py
backports_abc.pyc
backports.shutil_get_terminal_size-1.0.0
bleach
bleach-1.5.0.dist-info
certifi
certifi-2016.9.26.dist-info
configparser-3.5.0.dist-info
configparser-3.5.0-nspkg.pth
configparser.py
configparser.pyc
entrypoints-0.2.2.dist-info
entrypoints.py
entrypoints.pyc
enum
enum34-1.1.6.dist-info
functools32
functools32-3.2.3.post2.dist-info
html5lib
html5lib-0.9999999.dist-info
ipykernel
ipykernel-4.5.2.dist-info
ipython_genutils
ipython_genutils-0.1.0.dist-info
ipywidgets
ipywidgets-5.2.2.dist-info
jinja2
Jinja2-2.8.dist-info
jsonschema
jsonschema-2.5.1.dist-info
jupyter_client
jupyter_client-4.4.0.dist-info
jupyter_console
jupyter_console-5.0.0.dist-info
jupyter_core
jupyter_core-4.2.1.dist-info
markupsafe
MarkupSafe-0.23.dist-info
mistune-0.7.3.dist-info
mistune.py
mistune.pyc
nbconvert
nbconvert-5.0.0.dist-info
nbformat
nbformat-4.2.0.dist-info
pandocfilters-1.4.1.dist-info
pandocfilters.py
pandocfilters.pyc
pexpect
pexpect-4.2.1.dist-info
pickleshare-0.7.4.dist-info
pickleshare.py
pickleshare.pyc
prompt_toolkit
prompt_toolkit-1.0.9.dist-info
ptyprocess
ptyprocess-0.5.1.dist-info
pyzmq-16.0.2.dist-info
qtconsole
qtconsole-4.2.1.dist-info
simplegeneric-0.8.1.dist-info
simplegeneric.py
simplegeneric.pyc
singledispatch-3.4.0.3.dist-info
singledispatch_helpers.py
singledispatch_helpers.pyc
singledispatch.py
singledispatch.pyc
six-1.10.0.dist-info
six.py
six.pyc
terminado
terminado-0.6.dist-info
testpath
testpath-0.3.dist-info
tornado
tornado-4.4.2.dist-info
traitlets
traitlets-4.3.1.dist-info
wcwidth
wcwidth-0.1.7.dist-info
widgetsnbextension
widgetsnbextension-1.2.6.dist-info
zmq

Apa itu backports.shutil_get_terminal_size-1.0.0 dan apa isinya?

Ini adalah paket python, yang tampaknya mengekspos fungsi tunggal get_terminal_size di backports.shutil_get_terminal_size . Folder ini memiliki struktur:

./
├── backports
│   ├── __init__.py
│   └── shutil_get_terminal_size
│       ├── get_terminal_size.py
│       └── __init__.py
├── backports.shutil_get_terminal_size.egg-info
│   ├── dependency_links.txt
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   └── top_level.txt
├── HISTORY.rst
├── LICENSE
├── MANIFEST.in
├── PKG-INFO
├── README.rst
├── setup.cfg
├── setup.py
├── test_shutil_get_terminal_size.py
└── tox.ini

Isi dari PKG-INFO adalah:

Metadata-Version: 1.1
Name: backports.shutil_get_terminal_size
Version: 1.0.0
Summary: A backport of the get_terminal_size function from Python 3.3's shutil.
Home-page: https://github.com/chrippa/backports.shutil_get_terminal_size
Author: Christopher Rosell
Author-email: [email protected]
License: MIT
Description: backports.shutil_get_terminal_size
        ==================================

        A backport of the `get_terminal_size`_ function from Python 3.3's shutil.

        Unlike the original version it is written in pure Python rather than C,
        so it might be a tiny bit slower.

        .. _get_terminal_size: https://docs.python.org/3/library/shutil.html#shutil.get_terminal_size


        Example usage
        -------------

            >>> from backports.shutil_get_terminal_size import get_terminal_size
            >>> get_terminal_size()
            terminal_size(columns=105, lines=33)



        History
        =======

        1.0.0 (2014-08-19)
        ------------------

        First release.

Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2

Ah, oke, saya kira Anda membongkar sdist di sana secara manual di beberapa titik. Apakah menghapus seluruh direktori itu ( backports.shutil_get_terminal_size-1.0.0 ) ada bedanya? Saya menduga itu hanya ikan haring merah.

Oke, kembalikan /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py ke bentuk semula. Menjalankan ipython dan mendapatkan kesalahan ImportError: No module named shutil_get_terminal_size .

Kemudian pindahkan folder /home/ihincks/.local/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0 ke /home/ihincks untuk sementara. Jalankan ipython lagi, dengan kesalahan yang sama.

Oke, jadi folder itu hanya ikan haring merah, dan saya masih tidak tahu bagaimana cara menemukan /home/ihincks/.local/lib/python2.7/site-packages/backports :-(

Hmm, semoga saya bisa membantu lebih banyak, saya hanya setengah mengerti apa yang sedang terjadi; hal-hal instalasi python path/library umumnya membingungkan saya.

Tidak masalah, ini sepertinya sihir hitam yang cukup tersembunyi.

Jika ada yang bisa meniru ini pada sistem di mana mereka tidak keberatan memberi saya akses ssh untuk melihat-lihat dan mencoba memahami apa yang terjadi, silakan hubungi.

Saya juga mendapat masalah yang sama ....... Saya menginstal jupyter baru-baru ini dan ketika saya mencoba membuka file notebook ipython dikatakan kernel mati dengan kesalahan impor untuk backports.shutil_get_terminal_size. Akhirnya, saya memecahkan masalah ini setelah memutakhirkan pip, menginstal ulang jupyter dan backports.shutil-get-terminal-size beberapa kali........dan akhirnya menjalankan perintah ini: python2 -m ipykernel install --user. Itu memberi kehidupan pada kernel saya. Ref: http://askubuntu.com/questions/847263/install-jupyter-for-python-2-7-in-ubuntu-14-04

Jadi saya mengalami masalah ini, dan setelah memeriksa /usr/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info, saya hanya menemukan:

total 28
-rw-r--r--. 1 root root  596 Feb 27 10:42 DESCRIPTION.rst
-rw-r--r--. 1 root root    4 Feb 27 10:42 INSTALLER
-rw-r--r--. 1 root root 1175 Feb 27 10:42 METADATA
-rw-r--r--. 1 root root  701 Feb 27 10:42 metadata.json
-rw-r--r--. 1 root root 1455 Feb 27 10:42 RECORD
-rw-r--r--. 1 root root   10 Feb 27 10:42 top_level.txt
-rw-r--r--. 1 root root  110 Feb 27 10:42 WHEEL

dan tidak ada yang perlu diimpor. Ini setelah pip --upgrade, pip uninstall/install ipython dan seterusnya. Jadi sepertinya pip tidak benar-benar menginstal paket, hanya rodanya. Saya mengunduh file .tar.gz, menyalinnya ke direktori wheel yang memperbaiki masalah yang saya miliki dengan ipython. Bukan cara yang tepat untuk memperbaikinya. Saya menjalankan di RHEL7, jadi itu mungkin ada hubungannya dengan itu.

Direktori yang diakhiri dengan .dist-info adalah file metadata tentang paket yang diinstal, tidak dimaksudkan untuk memuat apa pun yang dapat diimpor. Kode harus berada di direktori yang berdekatan: /usr/lib/python2.7/site-packages/backports

Mungkin kode ini dapat membantu Anda: pip install --user backports.shutil_get_terminal_size , cukup instal untuk pengguna saat ini jika ipython Anda ok untuk root atau pengguna lain.

Hallo teman-teman,

jika kalian telah mencoba untuk memperbaikinya dengan

pip install backports.shutil_get_terminal_size

tapi itu tidak berhasil.

Cara terbaik adalah memeriksa jalur sistem Anda

import sys
print sys.path

periksa setiap jalur jika ada paket backports sebelum jalur model ipython yang benar dan hapus secara langsung.

Saya memiliki versi yang sangat aneh dari bug ini:

pde<strong i="6">@damoclid</strong>:~$ ipython
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/IPython/__init__.py", line 48, in <module>
    from .core.application import Application
  File "/usr/lib/python2.7/dist-packages/IPython/core/application.py", line 25, in <module>
    from IPython.core import release, crashhandler
  File "/usr/lib/python2.7/dist-packages/IPython/core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "/usr/lib/python2.7/dist-packages/IPython/core/ultratb.py", line 128, in <module>
    from IPython.utils.terminal import get_terminal_size
  File "/usr/lib/python2.7/dist-packages/IPython/utils/terminal.py", line 22, in <module>
    from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size
ImportError: No module named shutil_get_terminal_size
pde<strong i="7">@damoclid</strong>:~$ python
Python 2.7.13 (default, Jan 19 2017, 14:48:08) 
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import backports.shutil_get_terminal_size
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named shutil_get_terminal_size
>>> import sys
>>> print [p for p in sys.path if os.path.exists(p + "/backports")]
['/usr/lib/python2.7/dist-packages']
>>> import backports
>>> backports.__path__
['/usr/local/lib/python2.7/dist-packages/backports']
>>> os.path.exists("/usr/local/lib/python2.7/dist-packages/backports")
False
>>> dir(backports)
['__doc__', '__name__', '__path__']
>>> 
pde<strong i="8">@damoclid</strong>:~$ cd /usr/local/bin/
pde<strong i="9">@damoclid</strong>:/usr/local/bin$ cd ..
pde<strong i="10">@damoclid</strong>:/usr/local$ sudo find . -iname \*backports\*
pde<strong i="11">@damoclid</strong>:/usr/local$

Saya benar -benar tidak tahu mengapa python tidak menemukan paket OS asli backports / backports.shutil_get_terminal_size , atau mengapa ia menemukan versi hantu backports di /usr/local /lib. sys.path saya adalah:

['', '/usr/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages/ropevim-0.7.0-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/pde/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']

pde<strong i="13">@damoclid</strong>:/usr/local$ ls -ld `dpkg -L python-backports-shutil-get-terminal-size `
drwxr-xr-x   26 root root   4096 Mar  7 23:01 /./
drwxr-xr-x   12 root root   4096 Apr  5  2014 /usr/
drwxr-xr-x  201 root root  36864 May 14 22:01 /usr/lib/
drwxr-xr-x   27 root root  20480 Apr  4 15:53 /usr/lib/python2.7/
drwxr-xr-x  296 root root  20480 May 15 18:02 /usr/lib/python2.7/dist-packages/
drwxr-xr-x    3 root root   4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports/
-rw-r--r--    1 root root     75 Aug 19  2014 /usr/lib/python2.7/dist-packages/backports/__init__.py
drwxr-xr-x    2 root root   4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/
drwxr-xr-x    2 root root   4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/
-rw-r--r--    1 root root      1 Jul 28  2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/dependency_links.txt
-rw-r--r--    1 root root   1402 Jul 28  2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/PKG-INFO
-rw-r--r--    1 root root     10 Jul 28  2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/top_level.txt
-rw-r--r--    1 root root   2913 Aug 19  2014 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/get_terminal_size.py
-rw-r--r--    1 root root    338 Aug 19  2014 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/__init__.py
drwxr-xr-x  398 root root  12288 May 14 22:01 /usr/share/
drwxr-xr-x 3114 root root 126976 May 15 18:02 /usr/share/doc/
drwxr-xr-x    2 root root   4096 May 15 17:35 /usr/share/doc/python-backports-shutil-get-terminal-size/
-rw-r--r--    1 root root    333 Jul 28  2016 /usr/share/doc/python-backports-shutil-get-terminal-size/changelog.Debian.gz
-rw-r--r--    1 root root     71 Aug 19  2014 /usr/share/doc/python-backports-shutil-get-terminal-size/changelog.gz
-rw-r--r--    1 root root   1372 Jul 28  2016 /usr/share/doc/python-backports-shutil-get-terminal-size/copyright

Saya akan membuka kembali dan menandai sebagai 5.4 Saya pikir kita harus vendor shutil_get_terminal_size agar aman.

@Carreau fwiw rasanya mungkin ada bug pip atau python di sini, atau saya melakukan sesuatu yang bodoh, atau mungkin keduanya. Akan menjalankannya melewati beberapa orang pip yang lebih berpengetahuan.

Kasus lain di mana ia menemukan paket backports yang sebenarnya tidak ada. Beberapa orang telah melaporkan sesuatu seperti itu, tetapi saya juga tidak tahu dari mana asalnya. Bisakah Anda mencoba menjalankan skrip ini ? Dan cari file .pkg dan .pth , yang mungkin memengaruhinya.

@Carreau di sistem saya, masalahnya ternyata adalah keberadaan modul configparser :

pde<strong i="8">@damoclid</strong>:~/aip$ sudo grep backport `locate *.pth`
/usr/local/lib/python2.7/dist-packages/configparser-3.5.0-nspkg.pth:import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('backports',));ie = os.path.exists(os.path.join(p,'__init__.py'));m = not ie and sys.modules.setdefault('backports', types.ModuleType('backports'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
pde<strong i="9">@damoclid</strong>:~/aip$ pip freeze | grep configp
configparser==3.3.0.post2
pde<strong i="10">@damoclid</strong>:~/aip$ cd /usr/local/lib/
pde<strong i="11">@damoclid</strong>:/usr/local/lib$ find . -iname *configp*
./python2.7/dist-packages/configparser-3.5.0.dist-info
./python2.7/dist-packages/future/moves/configparser.py
./python2.7/dist-packages/future/moves/configparser.pyc
./python2.7/dist-packages/configparser.py
./python2.7/dist-packages/configparser-3.5.0-nspkg.pth
./python2.7/dist-packages/configparser.pyc
pde<strong i="12">@damoclid</strong>:/usr/local/lib$ sudo pip uninstall configparser
Not uninstalling configparser at /usr/lib/python2.7/dist-packages, outside environment /usr
pde<strong i="13">@damoclid</strong>:/usr/local/lib$ sudo rm -rf `find . -iname *configp*`
pde<strong i="14">@damoclid</strong>:/usr/local/lib$ ipython
Python 2.7.13 (default, Jan 19 2017, 14:48:08) 
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]:                                                                                                                                                                 
Do you really want to exit ([y]/n)? y

Terima kasih kepada @erikrose untuk bantuan men-debug ini.

Menutup sebagai vendor #10587 hal ini dan IPython 5.4 akan segera dirilis

Apakah halaman ini membantu?
0 / 5 - 0 peringkat