Pipenv: 2018.11.26: pipenv mengeluarkan kesalahan ular sanca saat membuat virtualenv

Dibuat pada 6 Des 2018  ·  30Komentar  ·  Sumber: pypa/pipenv

Deskripsi masalah

Mungkin terkait dengan # 3229, pipenv terus menampilkan kesalahan saat membuat virtualenv:

$ pipenv --three
['Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess\n    combine_stderr=combine_stderr)\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess\n    return subprocess.Popen(cmd, **options)\n', '  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__\n    restore_signals, start_new_session)\n', '  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n', "FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/pythonz': '/usr/local/bin/pythonz'\n", '\nDuring handling of the above exception, another exception occurred:\n\n', 'Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/contextmanagers.py", line 150, in spinner\n    yield _spinner\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run\n    write_to_stdout=True\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess\n    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))\n', 'TypeError: write() takes exactly one argument (3 given)\n']
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess
    combine_stderr=combine_stderr)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess
    return subprocess.Popen(cmd, **options)
  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/pythonz': '/usr/local/bin/pythonz'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1114, in invoke
    return Command.invoke(self, ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli/command.py", line 208, in cli
    clear=state.clear,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 574, in ensure_project
    pypi_mirror=pypi_mirror,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 516, in ensure_virtualenv
    ensure_python(three=three, python=python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 397, in ensure_python
    path_to_python = find_a_system_python(python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 360, in find_a_system_python
    python_entry = finder.find_python_version(line)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/pythonfinder.py", line 114, in find_python_version
    major=major, minor=minor, patch=patch, pre=pre, dev=dev, arch=arch, name=name
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 396, in find_python_version
    ver = next(iter(self.get_pythons(sub_finder)), None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 279, in get_pythons
    reverse=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 277, in <genexpr>
    (p for p in self._filter_paths(finder) if p.is_python),
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 264, in <genexpr>
    pth for pth in unnest(finder(p) for p in self.path_entries if p is not None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 251, in unnest
    for el in target:
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 264, in <genexpr>
    pth for pth in unnest(finder(p) for p in self.path_entries if p is not None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/mixins.py", line 121, in find_python_version
    for child in unnest(self.pythons.values())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 531, in pythons
    for path, entry in self.children.items():
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/cached_property.py", line 35, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 501, in children
    for child_key, child_val in self._gen_children():
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 493, in _gen_children
    entry = PathEntry.create(path=child, **pass_args)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 575, in create
    _new = cls(**creation_args)
  File "<attrs generated init b90d7581ea07925e94241736776cf96c889eb52c>", line 16, in __init__
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 518, in get_py_version
    py_version = PythonVersion.from_path(path=self, name=self.name)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/python.py", line 395, in from_path
    py_version = get_python_version(path.path.absolute().as_posix())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 68, in get_python_version
    combine_stderr=False, write_to_stdout=False)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run
    write_to_stdout=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess
    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))
TypeError: write() takes exactly one argument (3 given)

Hasil yang diharapkan

Diharapkan tidak ada error logging saat hanya membuat virtualenv.

Hasil sebenarnya

pembuatan virtualenv gagal.

Langkah-langkah untuk mereplikasi

$ pipenv --three

pipenv --support juga memancarkan kesalahan ini dan gagal mengumpulkan informasi dukungan!

Type Regression Release Blocker Vendored Dependencies

Komentar yang paling membantu

Rilis saat ini tampaknya benar-benar disemprotkan kepada saya. Solusi sementara lainnya yang saya lihat di masalah sebelumnya adalah secara khusus meneruskan jalur python seperti ini:

pipenv --three --python=`which python3`

Saya telah melakukan ini dengan sukses untuk saat ini: meringis:

Semua 30 komentar

Tampaknya /usr/local/bin/pythonz bukan lagi jalur yang valid.

Hmm. Haruskah itu terjadi? Saya tidak pernah menggunakan pythonz secara langsung. Saya pikir itu hanya ketergantungan pipenv yang dikelola ketika saya menginstal pipenv.

Sebagai permulaan, saya baru saja menghapus dan menginstal ulang pipenv 2018.11.26 dan saya masih mengalami masalah.

Dapatkah Anda memberikan keluaran dari pipenv --support ? Dan untuk mengonfirmasi, seharusnya tidak

Oh nvm baru saja melihat pesan Anda. Saya hanya ingin mengonfirmasi bahwa tidak ada versi pipenv nakal di jalur Anda di suatu tempat. Bisakah Anda memeriksa which pipenv dan python -m pipenv --version

$ which pipenv
/usr/local/bin/pipenv

python -m pipenv --version mengembalikan No module named pipenv karena saya telah menginstal Python 2 dan Python 3 melalui Homebrew, dan python menjalankan Python 2.7. Sesuai rekomendasi sebelumnya di sini, saya menginstal pipenv dengan Python 3. Jadi saya mengganti python3 dan mendapatkan:

$ python3 -m pipenv --version
pipenv, version 2018.11.26

Terima kasih!

Ah ok. Dan ya, bug itu masuk akal. Saya hanya akan menandainya di bagian atas dan memastikannya diperbaiki

Adakah kabar tentang kapan perbaikan akan dirilis untuk ini? Saya mengalami masalah ini karena mencegah saya menginstal persyaratan pipenv. Saya telah mencoba solusi @commandtab 's dengan tidak beruntung.

Saya tidak bisa menggunakan pipenv untuk bekerja sama sekali dengan versi saat ini.

$ which pipenv
/Users/josh/.pyenv/shims/pipenv

$ python -m pipenv --version
pipenv, version 2018.11.26

Saya mencoba menginstal dengan python3.7 dari homebrew, dan masalah yang sama.

Sepertinya tidak ada urgensi di sini, atau itu bukan masalah besar. Apakah saya melewatkan sesuatu, atau apakah pipenv benar-benar rusak dengan versi saat ini?

Rilis saat ini tampaknya benar-benar disemprotkan kepada saya. Solusi sementara lainnya yang saya lihat di masalah sebelumnya adalah secara khusus meneruskan jalur python seperti ini:

pipenv --three --python=`which python3`

Saya telah melakukan ini dengan sukses untuk saat ini: meringis:

Solusi itu tidak berhasil untuk saya. Aku harus downgrade ke 2018.10.13 dan kemudian menggunakan solusi pada yang benang :

pipenv install -d --python=$HOME/.pyenv/versions/3.7.1/bin/python

Sejauh yang saya tahu, pipenv telah sepenuhnya rusak sejak Oktober.

@ Techalchemy Ada kabar tentang perbaikan tag upstream? Pembuatan virtualenv pipenv masih membutuhkan solusi untuk pemanggilan.

Terima kasih ❤️

Ini agak kasar dengan semua perbaikan lain yang perlu diintegrasikan tetapi saya pikir CI akan lulus sekarang dan ini akan diperbaiki dengan # 3330 - maaf atas masalah ini

Ah ok. Dan ya, bug itu masuk akal. Saya hanya akan menandainya di bagian atas dan memastikannya diperbaiki

Masalah masih berlanjut, kapan saja perbaikan ini akan dirilis.

Masalah yang sama di sini.

Dapat mengonfirmasi bahwa solusi @ command-tab masih berfungsi.

Ini pasti masih terjadi dengan pipenv dan python homebrew ... agak terkejut tidak ada tes untuk menutupinya melihat sudah berapa lama masalah ini terjadi ...

Saya juga dapat mengonfirmasi bahwa masalah ini masih terjadi, meskipun masalah GitHub ini ditutup.

Apakah pengelola membutuhkan masalah baru untuk dibuat?

Masalah yang sama dengan Ubuntu 18 LTS yang diinstal di Subsistem Windows untuk Linux.

Solusi berhasil untuk saya.

@techalchemy masalah ini sepertinya masih ada. Bisakah Anda membukanya kembali atau memperjelas bahwa Anda ingin masalah baru dibuat?

Terima kasih.

Masalah yang sama dengan Ubuntu 18 LTS yang diinstal di Subsistem Windows untuk Linux.

sama disini

@techalemy silakan lihat lagi

Masalah yang sama di sini di macOs Mojave dan python 3.7

Saya juga:

  • Catalina
  • Python 3.7.

Semuanya berfungsi dengan baik setelah saya mengomentari baris ini di Pipfile saya:

[requires]

#python_version = "3.7.4"

Saya juga:

  • Catalina
  • Python 3.7.

Semuanya berfungsi dengan baik setelah saya mengomentari baris ini di Pipfile saya:

[requires]

#python_version = "3.7.4"

ahhhh ini berhasil untuk saya, terima kasih!

@JarredStanford @edsu
Ini bekerja untuk saya juga di WSL di VSCode (Saya tidak mencoba shell luar karena berfungsi dengan baik untuk proyek yang berbeda).

@ tab perintah
Menambahkan "--python = which python3 " juga berhasil. Saya tidak mencoba menambahkan "--tiga" dan sepertinya tidak perlu untuk kasus / versi penggunaan saya.

Setelah mendapatkan kedua solusi tersebut dan saya bisa membuatnya berfungsi, saya menghapusnya dan mencoba ketiga kalinya untuk memastikan lingkungan masih menyebabkan masalah (narator: memang demikian).

@tokopedia
Saya pikir ini mungkin tidak "sepenuhnya diperbaiki" pada 3330? Ini bisa menjadi masalah tangensial yang menyebabkan gejala yang sama. Dalam kasus saya, saya menggunakan WSL dan bertanya-tanya apakah 'python3' dan 'python3.exe' keduanya berada di jalur WSL saya tampak mencurigakan.

Menurut Anda, akan lebih baik jika saya membuka masalah baru, apakah Anda ingin saya menjalankan diagnostik tambahan, atau yang lainnya?

Saya menggunakan wsl2 dengan arclinux (manjaro)
Tampaknya pipenv memanggil python di jendela env host untuk menginstal
jadi kita perlu menentukan di mana menemukan python dengan:
pipenv --python=<PATH_TO_PYTHON>
atau
pipenv --python=which python3

bekerja untuk saya.

Dapat mengonfirmasi ini terjadi di bawah WSL dengan Ubuntu 18.04 LTS. Sepertinya pipenv akan mencari juru bahasa python daripada menggunakan yang sedang dijalankan, dan yang sedang dilakukan sedang melintasi PATH dalam urutan mundur. Saya memasang beberapa lingkungan python, dan setiap kali saya menghapusnya secara manual dari PATH, pipenv akan menemukan lingkungan lain dan mengeluh tentang yang itu.

Saya melihat masalah yang sama di WSL dengan Ubuntu 18.04 LTS. pipenv install --python $(which python3) berfungsi tetapi ketika saya kemudian melakukan pipenv shell , ia tidak dapat menemukan dependensi yang seharusnya diunduh.

Saya juga terpengaruh, menggunakan WSL 1 dan Ubuntu 18.04. Penyelesaian --python $(which python) berhasil.

Alasan untuk bagian terakhir dari pengecualian, yaitu bit ini:

  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 68, in get_python_version
    combine_stderr=False, write_to_stdout=False)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run
    write_to_stdout=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess
    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))
TypeError: write() takes exactly one argument (3 given)

... karena ada bug dalam panggilan untuk mencetak kesalahan saat menangani pengecualian pertama. Bug ini tampaknya telah diperbaiki di master kembali pada Jan 2019 - https://github.com/pypa/pipenv/commit/574fe7308d9ac81d64da954722f35c9eee0dd467#diff -a59595db75020aeb9f688d6a0b4818e6L162. Tetapi karena versi pipenv terbaru adalah 2018.11.26, saya rasa sebagian besar tidak memiliki versi tetap.

Seseorang dapat menambalnya secara manual. Buka /usr/local/lib/<your-python-version>/site-packages/pipenv/vendor/vistir/misc.py , navigasikan ke baris 162, dan ubah ini:

sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))

... untuk ini:

sys.stderr.write(f"Error {exc} while executing command " + " ".join(cmd._parts))

Anda sekarang akan mendapatkan laporan pengecualian yang lebih akurat. Dalam kasus saya, masalahnya ada pada pipenv berbasis WSL Linux yang mendeteksi instalasi Python berbasis Windows dan mengalami masalah dalam menjalankannya, yang cukup jelas:

Error [Errno 8] Exec format error: '/mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe' while executing command /mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe -c import sys; print(['Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/contextmanagers.py", line 150, in spinner\n    yield _spinner\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 314, in run\n    write_to_stdout=True\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess\n    combine_stderr=combine_stderr)\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess\n    return subprocess.Popen(cmd, **options)\n', '  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__\n    restore_signals, start_new_session)\n', '  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n', "OSError: [Errno 8] Exec format error: '/mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe'\n"]

Untuk pengguna WSL, saya yakin masalah ini dapat diatasi dengan memastikan bahwa persyaratan apa pun pada versi Python Anda di Pipfile _exactly_ cocok dengan instalasi Python berbasis Linux, mis.

[requires]
python_version = "3.6.8"  # Make sure this exactly matches an installed version, or remove it.

Semoga ini membantu.

Tidak yakin seberapa banyak ini membantu, tetapi menghapus Pipfile, menjalankan pipenv lock , dan kemudian memasukkan kembali konten Pipfile lama dan menjalankan pipenv install bekerja untuk saya secara permanen.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat