可能与#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
因为我同时通过Homebrew安装了Python 2和Python 3,而python
运行Python 2.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在当前版本中完全损坏了?
当前的发行版肯定在我眼前。 我在上一期中看到的另一个临时解决方法是专门传递python
路径,如下所示:
pipenv --three --python=`which python3`
我一直在成功地做到这一点:做鬼脸:
该解决方法对我不起作用。 我不得不降级为2018.10.13
,然后在该线程上使用替代方法:
pipenv install -d --python=$HOME/.pyenv/versions/3.7.1/bin/python
据我所知,自10月以来,pipenv已完全损坏。
@techalchemy上游标签修复程序中有任何单词吗? pipenv virtualenv创建仍然需要调用变通办法。
谢谢❤️
对于需要集成的所有其他修复程序,这有点粗糙,但是我认为CI现在可以通过,并且将在#3330中修复-麻烦您了
喔好吧。 是的,这个错误是有道理的。 我将其标记在上游,并确保将其固定
问题仍然存在,何时发布此修复程序的任何想法。
这里同样的问题。
可以确认@ command-tab的解决方法仍然有效。
自制的pipenv和python仍然肯定会发生这种情况……令人惊讶的是,没有看到涵盖该问题持续了多长时间的测试……
我也可以确认,尽管这个GitHub问题已经解决,但这个问题仍然在发生。
维护者是否需要创建新的问题?
Linux的Windows子系统中安装的Ubuntu 18 LTS的相同问题。
解决方法对我有用。
@techalchemy这个问题似乎仍然存在。 您可以重新打开它还是清楚地表明要创建一个新的问题?
谢谢。
Linux的Windows子系统中安装的Ubuntu 18 LTS的相同问题。
同样在这里
@techalchemy请再看一看
macOs Mojave和python 3.7上的相同问题
我也是:
一旦我在Pipfile中将此行注释掉,一切都会正常进行:
[requires]
#python_version = "3.7.4"
我也是:
- 卡塔琳娜
- Python 3.7。
一旦我在Pipfile中将此行注释掉,一切都会正常进行:
[requires] #python_version = "3.7.4"
啊,这对我有用,谢谢!
@JarredStanford @edsu
这在VSCode中的WSL上也对我有效(我没有尝试使用外部外壳,因为它在其他项目中也可以正常工作)。
@ command-tab
添加“ --python = which python3
”也可以。 我没有尝试添加“-三”,对于我的用例/版本,似乎没有必要。
在获得两种解决方法后,我能够使其正常工作,我将其删除,并尝试第三次以确保环境仍然引起问题(讲述人:的确如此)。
@techalchemy
我想这可能不会在3330中“完全解决”吗? 这可能是导致相同症状的切线问题。 就我而言,我正在使用WSL,想知道'python3'和'python3.exe'都在我的WSL路径中是否可疑。
您是否认为最好打开一个新期刊,是否要我运行其他诊断程序,或者其他?
我在arclinux中使用wsl2(manjaro)
似乎Pipenv正在宿主环境Windows中调用python进行安装
所以我们需要定义在哪里可以找到python:
pipenv --python=<PATH_TO_PYTHON>
要么pipenv --python=which python3
为我工作。
可以通过Ubuntu 18.04 LTS在WSL下确认这种情况。 似乎pipenv正在寻找python解释器,而不是使用正在执行的python解释器,并且这样做实际上是在向后遍历PATH。 我安装了多个python环境,每当我从PATH中手动删除一个环境时,pipenv都会找到另一个环境并抱怨该环境。
我在Ubuntu 18.04 LTS的WSL下看到了相同的问题。 pipenv install --python $(which python3)
可以工作,但是当我随后执行pipenv shell
,它找不到应该下载的依赖项。
使用WSL 1和Ubuntu 18.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月在master中修复-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安装_exactly_完全匹配来缓解此问题。
[requires]
python_version = "3.6.8" # Make sure this exactly matches an installed version, or remove it.
希望这可以帮助。
不确定这有多大帮助,但是删除Pipfile,运行pipenv lock
,然后将旧Pipfile的内容放回去并运行pipenv install
对我来说是永久有效的。
最有用的评论
当前的发行版肯定在我眼前。 我在上一期中看到的另一个临时解决方法是专门传递
python
路径,如下所示:我一直在成功地做到这一点:做鬼脸: