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)
Diharapkan tidak ada error logging saat hanya membuat virtualenv.
pembuatan virtualenv gagal.
$ pipenv --three
pipenv --support
juga memancarkan kesalahan ini dan gagal mengumpulkan informasi dukungan!
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:
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.
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:Saya telah melakukan ini dengan sukses untuk saat ini: meringis: