おそらく#3229に関連して、pipenvは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)
virtualenvを作成するだけで、エラーログは発生しないと予想されます。
virtualenvの作成は失敗します。
$ pipenv --three
pipenv --support
もこれらのエラーを発行し、サポート情報の収集に失敗します。
/usr/local/bin/pythonz
は有効なパスではなくなったようです。
うーん。 それはあったはずですか? pythonzを直接使用したことはありません。 pipenvをインストールしたときに管理したのは単なるpipenvの依存関係だと思いました。
キックについては、pipenv 2018.11.26をアンインストールして再インストールしましたが、まだ問題が発生しています。
pipenv --support
からの出力を提供できますか? そして確認するために、そうではなかったはずです
ああnvmはちょうどあなたのメッセージを見ました。 どこかにあなたのパスに不正なバージョンのpipenvがないことを確認したいだけです。 which pipenv
とpython -m pipenv --version
を確認できますか
$ which pipenv
/usr/local/bin/pipenv
python -m pipenv --version
はNo module named pipenv
python -m pipenv --version
返しました。これは、Python2とPython3の両方がHomebrew経由でインストールされており、 python
がPython2.7を実行しているためです。 ここでの以前の推奨事項に従って、Python 3でpipenvをインストールしました。そこで、 python3
に置き換えて、次のようにしました。
$ python3 -m pipenv --version
pipenv, version 2018.11.26
ありがとう!
ああ、わかりました。 そして、ええ、バグは理にかなっています。 上流にタグを付けて、修正されることを確認します
これに対する修正がいつリリースされるかについて何か言いたいことはありますか? 私はこの問題を抱えており、pipenv要件をインストールできません。 私は@commandtabの回避策を試し
私は、現在のバージョンとまったく仕事にpipenvを取得することはできません。
$ which pipenv
/Users/josh/.pyenv/shims/pipenv
$ python -m pipenv --version
pipenv, version 2018.11.26
自作のpython3.7でインストールしてみましたが、同じ問題が発生しました。
ここでは緊急性はないようですが、大きな問題ではないようです。 私は何かが足りないのですか、それとも現在のバージョンでpipenvが完全に壊れていますか?
現在のリリースは確かに私にはうんざりしているようです。 過去の号で見たもう1つの一時的な回避策は、次のようにpython
パスを具体的に渡すこと
pipenv --three --python=`which python3`
私は当分の間これを成功させてきました:grimacing:
その回避策は私にはうまくいきませんでした。 2018.10.13
にダウングレードしてから、そのスレッドで回避策を使用する必要がありました。
pipenv install -d --python=$HOME/.pyenv/versions/3.7.1/bin/python
私の知る限り、pipenvは10月から完全に壊れています。
@techalchemyアップストリームタグの修正に関する単語はありますか? pipenv virtualenvの作成には、呼び出しの回避策が必要です。
ありがとう❤️
これは、統合する必要のある他のすべての修正では少し荒いものでしたが、CIは今すぐ合格し、#3330で修正されると思います-問題をお詫びします
ああ、わかりました。 そして、ええ、バグは理にかなっています。 上流にタグを付けて、修正されることを確認します
それでも問題は解決しません。この修正がいつリリースされるかはわかりません。
ここで同じ問題。
@ command-tabの回避策が引き続き機能することを確認できます。
これは間違いなく自作のpipenvとpythonで起こります…この問題がどれくらい続いているかを見てそれをカバーするテストがないのはちょっと驚いています…
このGitHubの問題は解決されましたが、この問題がまだ発生していることも確認できます。
メンテナは新しい問題を作成する必要がありますか?
Linux用のWindowsサブシステムにインストールされているUbuntu18LTSでも同じ問題が発生します。
回避策は私のために働きます。
@techalchemyこの問題はまだ存在しているようです。 再度開くか、新しい問題を作成することを明確にしてください。
ありがとう。
Linux用のWindowsサブシステムにインストールされているUbuntu18LTSでも同じ問題が発生します。
こっちも一緒
@techalchemyもう一度ご覧ください
macOsMojaveとpython3.7で同じ問題が発生します
私も:
Pipfileでこの行をコメントアウトすると、すべて正常に機能します。
[requires]
#python_version = "3.7.4"
私も:
- カタリナ
- Python3.7。
Pipfileでこの行をコメントアウトすると、すべて正常に機能します。
[requires] #python_version = "3.7.4"
ああ、これは私のために働いた、ありがとう!
@JarredStanford @edsu
これは、VSCodeのWSLでも機能しました(別のプロジェクトで正常に機能したため、外部シェルは試しませんでした)。
@ command-tab
「--python = which python3
」の追加も機能しました。 「--three」を追加しようとしませんでしたが、ユースケース/バージョンには必要ないようです。
両方の回避策を取得し、それを機能させることができた後、それらを削除し、環境がまだ問題を引き起こしていることを確認するために3回目の試行を行いました(ナレーター:それはそうでした)。
@techalchemy
これは3330で「完全に修正」されていない可能性があると思いますか? 同じ症状を引き起こす接線の問題である可能性があります。 私の場合、WSLを使用していて、「python3」と「python3.exe」の両方がWSLパスにあるのではないかと考えています。
新しい問題を開くのが最善だと思いますか、追加の診断を実行しますか、それとも他の何かを実行しますか?
私はarclinux(manjaro)でwsl2を使用しています
pipenvがホスト環境ウィンドウでPythonを呼び出してインストールしているようです
したがって、Pythonを見つける場所を次のように定義する必要があります。
pipenv --python=<PATH_TO_PYTHON>
またはpipenv --python=which python3
私のために働きます。
これがUbuntu18.04LTSのWSLで発生することを確認できます。 pipenvは、実行されているものを使用するのではなく、Pythonインタープリターを探しているようです。そのため、PATHを逆の順序でトラバースしています。 複数のPython環境がインストールされており、PATHから手動で削除すると、pipenvは別の環境を見つけて、代わりにその環境について文句を言います。
Ubuntu 18.04LTSのWSLでも同じ問題が発生しています。 pipenv install --python $(which python3)
機能しますが、その後pipenv shell
、ダウンロードする必要のある依存関係が見つかりません。
また、WSL1とUbuntu18.04を使用して影響を受けています。 回避策--python $(which python)
機能します。
例外の最後の部分、つまりこのビットの理由:
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)
...最初の例外を処理するときにエラーを出力する呼び出しにバグがあるためです。 このバグは、2019年1月にマスターですでに修正されているようです-https : //github.com/pypa/pipenv/commit/574fe7308d9ac81d64da954722f35c9eee0dd467#diff-a59595db75020aeb9f688d6a0b4818e6L162。 しかし、pipenvの最新バージョンは2018.11.26なので、ほとんどの場合、修正バージョンがないと思います。
手動でパッチを当てることができます。 /usr/local/lib/<your-python-version>/site-packages/pipenv/vendor/vistir/misc.py
開き、行162に移動して、次のように変更します。
sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))
...これに:
sys.stderr.write(f"Error {exc} while executing command " + " ".join(cmd._parts))
これで、より正確な例外レポートが得られます。 私の場合、問題はWSL LinuxベースのpipenvがWindowsベースのPythonインストールを検出し、それらの実行に問題があることに関係しています。これは明らかです。
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"]
WSLユーザーの場合、 Pipfile
Pythonバージョンの要件が、LinuxベースのPythonインストールと_正確に_一致するようにすることで、問題を軽減できると思います。
[requires]
python_version = "3.6.8" # Make sure this exactly matches an installed version, or remove it.
お役に立てれば。
これがどれだけ役立つかはわかりませんが、Pipfileを削除し、 pipenv lock
を実行してから、古いPipfileの内容を元に戻してpipenv install
を実行すると、永続的に機能します。
最も参考になるコメント
現在のリリースは確かに私にはうんざりしているようです。 過去の号で見たもう1つの一時的な回避策は、次のように
python
パスを具体的に渡すこと私は当分の間これを成功させてきました:grimacing: