- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在将项目移植到 Python3,但在 Windows 上遇到意外错误:
基本上在 Windows 上的 Python 3.6 上,每次使用子进程创建进程时,我都会遇到以下异常:
d:\temp\backpack\venv\myvenv_py3.6\lib\site-packages\git\cmd.py:1011: in _call_process
return self.execute(call, **exec_kwargs)
d:\temp\backpack\venv\myvenv_py3.6\lib\site-packages\git\cmd.py:732: in execute
**subprocess_kwargs
D:\temp\cpython-3.6.3\Lib\subprocess.py:611: in __init__
_cleanup()
D:\temp\cpython-3.6.3\Lib\subprocess.py:220: in _cleanup
res = inst._internal_poll(_deadstate=sys.maxsize)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x0000000004FD53C8>
_deadstate = 9223372036854775807
_WaitForSingleObject = <built-in function WaitForSingleObject>
_WAIT_OBJECT_0 = 0, _GetExitCodeProcess = <built-in function GetExitCodeProcess>
def _internal_poll(self, _deadstate=None,
_WaitForSingleObject=_winapi.WaitForSingleObject,
_WAIT_OBJECT_0=_winapi.WAIT_OBJECT_0,
_GetExitCodeProcess=_winapi.GetExitCodeProcess):
"""Check if child process has terminated. Returns returncode
attribute.
This method is called by __del__, so it can only refer to objects
in its local scope.
"""
_log.debug('proc._internal_poll self.pid=%s self._handle=%s self.returncode=%s self=%s', self.pid, self._handle, self.returncode, self)
if self.returncode is None:
> if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:
E OSError: [WinError 6] The handle is invalid
D:\temp\cpython-3.6.3\Lib\subprocess.py:1051: OSError
subprocess
在哪里并不重要正在创建调用(在这个项目中,很多来自 GitPython
包和 plumbum
)。
这次执行发生在这个保护伞下:build script
调用 venv/Scripts/coverage run -m pytest -v tests/
.但我也试过 pytest-cov
与 venv/Scripts/pytest --cov=mypackage --cov-config .coveragerc - tests/
在繁殖方面:
<build script>
调用 venv/Scripts/coverage run -m pytest
]coverage run -m pytest
时它总是失败直接从 venv 调用pytest
时它总是通过直接从 virtualenv 调用<build script>
被调用,或者如果 coverage
或 pytest
直接从 venv 调用到目前为止我得到的唯一线索来自这个 StackOverflow 线程:https://stackoverflow.com/a/43975118更准确地说,是第一个接受的答案中的评论指向与 _cleanup
相关的有用信息。来自 subprocess
的方法模块。
最佳答案
稍作停顿,我很快找到了这背后的原因。
是因为项目中GitPython
的使用没有调用git.Repo.close()
或者使用了git.Repo
作为上下文管理器。有一个 warning about this在 GitPython
的自述文件中。
在 subprocess
的 _internal_poll
方法中添加日志有助于了解哪个进程 (args
) 是罪魁祸首。对于 GitPython
它是 git cat-file
...
关于python - 操作系统错误 : [WinError 6] The handle is invalid when calling subprocess from Python 3. 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535676/
我有这个python代码,添加一个torrent文件:。下面是用来移动.torrent文件的代码:。但它给出了错误:发生异常:PermissionError[WinError 32]该进程无法访问该文
几年前,我用 Python 3 编写了一个聊天程序,直到现在,在 Windows 和 Mac 上一切都运行良好。该函数在另一个脚本中执行: import socket import pickle de
我正在使用客户端/服务器程序创建凯撒密码程序。客户端将输入消息和 key ,服务器将返回密文。这是我的服务器代码: import socket def getCaesar(message, key):
我在运行这段代码时收到 [WinError 10057]。而且我不知道为什么当我浏览到 localhost:8081 时它会崩溃,因为相同的代码正在我 friend 的机器上运行... import
我正在为我的 domotica 系统制作一个连接系统,但我遇到了一个我无法解决的错误。 这是我的脚本: import insteon import time insteon.connect('10.2
我知道这是服务器部分的错误,当应使用s变量时正在使用conn变量,但是我已经坐在这里2个小时了,看不到错误。错误:[WinError 10057] A request to send or recei
我试图根据我正在学习的类(class)编写一个非常简单的“网络套接字”(服务器)程序和“网络连接”(客户端)程序。尝试从VMWare Workstation 15中的Kali Linux虚拟机使用“网
试图使程序将MIDI文件转换为其他文件类型。 这是无效的代码示例: from midi2audio import FluidSynth midfile = "F:\\ai nea\\Actual Pr
我正在学习使用 ftplib 从此链接从 ftp 服务器检索文件:https://docs.python.org/2/library/ftplib.html 当我运行这段代码时 from ftplib
我尝试使用 python 连接 mySql 服务器,这是我的代码(当然我将数据库详细信息更改为假的): import pymysql connMySql= pymysql.connec
这个问题在这里已经有了答案: Parsing a mix of Backward slash and forward slash in a filename (3 个答案) 关闭 4 年前。 我正在
所以我在Python中使用shutil。我想要做的是将一个目录从我的 onedrive 文件夹移动到我的 Adobe Premeiere 项目文件夹(目录中包含内容)。当我执行命令“shutil.
我正在编写一些代码,根据文件的标题为文件添加扩展名。对于任何 gzip 文件,我都在提取数据。 当我尝试运行代码时出现 WinError 32。下面是代码和错误 感谢您的任何建议。 def extra
我已经通读了这篇对 python 套接字的介绍: http://docs.python.org/3.3/howto/sockets.html 这是我的服务器 import socket servers
我正在尝试创建文件夹: import os mypath = (r'C:\Program Files\my_folder') if not os.path.isdir(mypath):
import mysql.connector mydb = mysql.connector.connect(host="localhost", user="myusername", passwd="m
练习1:更改套接字程序socket1.py以提示用户 URL,以便它可以读取任何网页。您可以使用split('/')来 将URL分解成各个组成部分,以便您可以提取主机 套接字连接调用的名称。使用try
我正在尝试通过 python 套接字将客户端连接到服务器。客户端在我的电脑上连接成功,但其他网络上的人无法连接。 TimeoutError: [WinError 10060]连接失败后在客户端。这是我
import send2trash baconFile = open('bacon.txt', 'w') baconFile.write('Bacon is nice') baconFile.clos
我尝试在 python3.6 virtualenv 上通过 python get-pip.py 命令安装 pip,但收到错误: (myvenv_python3) C:\Users\Kaleab\Dow
我是一名优秀的程序员,十分优秀!