Saya mencoba menginstal daftar paket menggunakan pip.

Kode yang saya gunakan adalah:

import pip

def install(package_name):
        try:
            pip.main(['install', package_name])
        except:
            print("Unable to install " + package_name)

Kode ini berfungsi dengan baik dan jika sebuah paket tidak tersedia, itu memberikan kesalahan:

Tidak ditemukan distribusi yang cocok

Namun, yang saya coba lakukan adalah jika instalasi gagal (misalnya: nama paket tidak valid), saya ingin mencetak paket yang gagal.

Apa yang bisa dilakukan untuk itu?

Bantuan apa pun akan dihargai, terima kasih.

6
Gokul 21 Agustus 2017, 17:00

2 jawaban

Jawaban Terbaik

Coba periksa nilai pengembalian untuk bukan nol, yang menunjukkan kesalahan terjadi dengan penginstalan. Tidak semua kesalahan memicu pengecualian.

import pip

def install(package_name):
        try:
            pipcode = pip.main(['install', package_name])
            if pipcode != 0:
                print("Unable to install " + package_name + " ; pipcode %d" % pipcode)
        except:
            print("Unable to install " + package_name)
5
tdube 21 Agustus 2017, 14:25

Anda dapat memeriksa nilai paket untuk memverifikasi jika tidak ada distribusi yang cocok ditemukan. Biasanya paket akan mengembalikan 0 jika ada kandidat instalasi, jika tidak, akan mengembalikan 1 jika tidak ada kandidat yang ditemukan

import pip

def install(package_name):
    package = pip.main(['install', package_name])      
    result = "Package successfully installed: " if package == 0 else "Unable to find package: "
    print(result + package_name)

Jadi, jika Anda mencoba melakukan sesuatu seperti ini:

>>> install("Virtualenvs")

Akan kembali:

Collecting virtualenvs
Could not find a version that satisfies the requirement virtualenvs (from versions: )
No matching distribution found for virtualenvs
Unable to find package: virtualenvs

Karena tidak ada paket yang valid untuk "Birtualenvs". Tetapi dengan paket yang valid:

>>> install("virtualenv")

Akan kembali:

Requirement already satisfied: virtualenv in/usr/lib/python2.7/dist-packages
Package successfully installed: virtualenv
1
Yago Azedias 30 Oktober 2017, 17:25