- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用 ctypes 和 matplotlib 的脚本。通过 python 控制台,一切正常,但卡住,即使导入了 matplotlib,我也会从 ctypes 收到 NotADirectoryError。
调试.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ctypes
import matplotlib # produces NotADirectoryError in ctypes.WinDLL()
def main():
dll = ctypes.WinDLL("CSSSM")
if __name__=="__main__":
main()
设置.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from cx_Freeze import setup, Executable
import os, site
[python_dir, site_dir] = site.getsitepackages()
include_files = []
missing_dll = ["msvcr100.dll"]
for dll in missing_dll:
include_files.append((os.path.join(python_dir, dll), dll))
buildOptions_exe = dict(
compressed = False,
includes = ["re"],
include_files = include_files
)
setup(
name = "Debugger",
author = "Name",
version = "0.0.0",
options = dict(build_exe = buildOptions_exe),
executables = [Executable("debug.py"),]
)
执行卡住脚本:
> build\exe.win32-3.3\debug.exe
Traceback (most recent call last):
File "C:\Python\WinPython-32bit-3.3.2.3\python-3.3.2\lib\site-packages\cx_Free
ze\initscripts\Console3.py", line 27, in <module>
exec(code, m.__dict__)
File "debug.py", line 40, in <module>
File "debug.py", line 36, in main
File "C:\Python\WinPython-32bit-3.3.2.3\python-3.3.2\lib\ctypes\__init__.py",
line 353, in __init__
self._handle = _dlopen(self._name, mode)
NotADirectoryError: [WinError 267] The directory name is invalid.
.
编辑: WinDbg 在 kernel32!LoadLibraryW
处设置断点(由 eryksun 的评论提供)。
...
ModLoad: 65630000 65697000 O:\build\exe.win32-3.3\numpy.random.mtrand.pyd
ModLoad: 011e0000 01295000 O:\build\exe.win32-3.3\_hashlib.pyd
(304.898): Break instruction exception - code 80000003 (first chance)
eax=0023f400 ebx=65810815 ecx=00000000 edx=0023f39c esi=0023f2f8 edi=00f04b40
eip=750e3226 esp=0023f2f4 ebp=0023f2fc iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\syswow64\KERNELBASE.dll -
KERNELBASE!DebugBreak+0x2:
750e3226 cc int 3
0:000> bp kernel32!LoadLibraryW
*** WARNING: Unable to verify checksum for O:\build\exe.win32-3.3\_ctypes.pyd
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\syswow64\kernel32.dll -
0:000> g
Breakpoint 0 hit
eax=02c6b940 ebx=1d1a8fc0 ecx=00000000 edx=0000004d esi=00f690a8 edi=00f6e1e8
eip=751548f3 esp=0023f2a4 ebp=0023f2b4 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
kernel32!LoadLibraryW:
751548f3 8bff mov edi,edi
0:000> pt
eax=00000000 ebx=1d1a8fc0 ecx=7efdd000 edx=0000010b esi=00f690a8 edi=00f6e1e8
eip=75154905 esp=0023f2a4 ebp=0023f2b4 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200246
kernel32!LoadLibraryW+0x12:
75154905 c20400 ret 4
0:000> r @eax
eax=00000000
0:000> dt _TEB @$teb LastErrorValue
_ctypes!_TEB
+0x034 LastErrorValue : 0x10b
0:000> g
eax=00000000 ebx=00000001 ecx=00000000 edx=00000000 esi=00000002 edi=003ef2d0
eip=77381f46 esp=0371fcc0 ebp=0371fe20 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
ntdll!NtWaitForWorkViaWorkerFactory+0x12:
77381f46 83c404 add esp,4
.
编辑 2: WinDbg 在 ntdll!LdrLoadDll
处设置断点,由 eryksun 的评论提供。
...
ModLoad: 63570000 635d7000 O:\build\exe.win32-3.3\numpy.random.mtrand.pyd
ModLoad: 02170000 02225000 O:\build\exe.win32-3.3\_hashlib.pyd
(8e4.161c): Break instruction exception - code 80000003 (first chance)
eax=006af9b0 ebx=636e0815 ecx=00000000 edx=006af94c esi=006af8a8 edi=02754b40
eip=75f73226 esp=006af8a4 ebp=006af8ac iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\syswow64\KERNELBASE.dll -
KERNELBASE!DebugBreak+0x2:
75f73226 cc int 3
0:000> bp ntdll!LdrLoadDll
*** WARNING: Unable to verify checksum for O:\build\exe.win32-3.3\_ctypes.pyd
0:000> g
Breakpoint 0 hit
eax=006af850 ebx=00000000 ecx=75fa182c edx=00000001 esi=00000000 edi=773f7da3
eip=773fc4dd esp=006af810 ebp=006af848 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200246
ntdll!LdrLoadDll:
773fc4dd 8bff mov edi,edi
0:000> pt
eax=c0000103 ebx=00000000 ecx=774243d3 edx=00000000 esi=00000000 edi=773f7da3
eip=773fc596 esp=006af810 ebp=006af848 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200246
ntdll!LdrLoadDll+0xb9:
773fc596 c21000 ret 10h
0:000> r @eax
eax=c0000103
0:000> dt _TEB @$teb
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\syswow64\kernel32.dll -
_ctypes!_TEB
+0x000 NtTib : _NT_TIB
+0x01c EnvironmentPointer : (null)
+0x020 ClientId : _CLIENT_ID
+0x028 ActiveRpcHandle : (null)
+0x02c ThreadLocalStoragePointer : 0x7efdd02c Void
+0x030 ProcessEnvironmentBlock : 0x7efde000 _PEB
+0x034 LastErrorValue : 0
+0x038 CountOfOwnedCriticalSections : 0
+0x03c CsrClientThread : (null)
+0x040 Win32ThreadInfo : (null)
+0x044 User32Reserved : [26] 0
+0x0ac UserReserved : [5] 0
+0x0c0 WOW32Reserved : 0x74882320 Void
+0x0c4 CurrentLocale : 0x407
+0x0c8 FpSoftwareStatusRegister : 0
+0x0cc SystemReserved1 : [54] (null)
+0x1a4 ExceptionCode : 0n0
+0x1a8 ActivationContextStack : _ACTIVATION_CONTEXT_STACK
+0x1bc SpareBytes1 : [24] ""
+0x1d4 GdiTebBatch : _GDI_TEB_BATCH
+0x6b4 RealClientId : _CLIENT_ID
+0x6bc GdiCachedProcessHandle : (null)
+0x6c0 GdiClientPID : 0
+0x6c4 GdiClientTID : 0
+0x6c8 GdiThreadLocalInfo : (null)
+0x6cc Win32ClientInfo : [62] 0
+0x7c4 glDispatchTable : [233] (null)
+0xb68 glReserved1 : [29] 0
+0xbdc glReserved2 : (null)
+0xbe0 glSectionInfo : (null)
+0xbe4 glSection : (null)
+0xbe8 glTable : (null)
+0xbec glCurrentRC : (null)
+0xbf0 glContext : (null)
+0xbf4 LastStatusValue : 0xc0000103
+0xbf8 StaticUnicodeString : _UNICODE_STRING ""
+0xc00 StaticUnicodeBuffer : [261] ""
+0xe0c DeallocationStack : 0x005b0000 Void
+0xe10 TlsSlots : [64] (null)
+0xf10 TlsLinks : _LIST_ENTRY [ 0x0 - 0x0 ]
+0xf18 Vdm : (null)
+0xf1c ReservedForNtRpc : 0x0095c7a8 Void
+0xf20 DbgSsReserved : [2] (null)
+0xf28 HardErrorMode : 0
+0xf2c Instrumentation : [16] (null)
+0xf6c WinSockData : (null)
+0xf70 GdiBatchCount : 0x7efdb000
+0xf74 InDbgPrint : 0 ''
+0xf75 FreeStackOnTermination : 0 ''
+0xf76 HasFiberData : 0 ''
+0xf77 IdealProcessor : 0 ''
+0xf78 Spare3 : 0
+0xf7c ReservedForPerf : (null)
+0xf80 ReservedForOle : (null)
+0xf84 WaitingOnLoaderLock : 0
+0xf88 Wx86Thread : _Wx86ThreadState
+0xf94 TlsExpansionSlots : (null)
+0xf98 ImpersonationLocale : 0
+0xf9c IsImpersonating : 0
+0xfa0 NlsCache : (null)
+0xfa4 pShimData : (null)
+0xfa8 HeapVirtualAffinity : 0
+0xfac CurrentTransactionHandle : (null)
+0xfb0 ActiveFrame : (null)
+0xfb4 FlsData : 0x009558f8 Void
最佳答案
导入的 matplotlib(尤其是 numpy 的导入)将 OSError: 找不到指定的模块
从 ctypes 更改为 NotADirectoryError: [WinError 267] 目录名称无效
在卡住的脚本中。
仅此而已。如果安装了 DLL,一切都会正常。如果未导入 matplotlib,您也会在卡住脚本中收到 OSError: The指定模块找不到
。但是,如果导入 matplotlib 并且脚本被卡住,则 OSError: 无法找到指定的模块
会变成奇怪的 NotADirectoryError: [WinError 267] 目录名称无效
。
关于python - 来自带有 matplotlib 和 cx_Freeze 的 ctypes 的 NotADirectoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28091714/
我正在尝试编译一个 python 程序,我使用的是 python 3.2。所以我下载了 cx_freeze 并安装了它。当我尝试在 cmd 中运行 setup.py 时,它说: "importerro
我正在尝试将我的 python 3.4 程序转换为 exe 以供分发。我尝试使用 cx_Freeze 来做到这一点。但是,当我使用此 setup.py 运行 python setup.py build
我在使用 cx_Freeze-5.0.1-cp36-cp36m-win32.whl 将 python 3.6 编译为 exe 时遇到问题,请帮助我。 我已经从http://www.lfd.uci.ed
比方说 numpy_example.py是: import numpy as np a = np.array([1, 2, 3]) print(a) 使用 Python 2.7.9,使用 cxFree
我正在使用 python 3.7 和 cx_Freeze 5.1.1 ,我试图将我的 python 脚本转换为可执行文件,但我遇到了丢失模块错误,我被难住了。 我尝试将模块放入包中并包含安装脚本,但没
我正在尝试为 Python 3.3 安装 cx_Freeze。但是,在编译源代码时出现此错误 gcc -pthread build/temp.linux-i686-3.3/source/bases/C
tss.py --> 该文件包含一个打开另一个 python 文件 (dark.py) 的子进程 import subprocess as sp def process(): programN
所以我的 python 脚本依赖于我创建的另一个模块。该模块读取文本文件。当我从源代码运行并且一切正常时,脚本、模块和它读取的文件通常位于同一目录中。 我用cx_freeze编译,当我运行它时,导入的
我有一个应用程序,可以在运行时将一些内容打印到控制台。但作为独立的可执行文件不会在控制台上打印任何内容? setup.py 脚本如下所示: import sys from cx_Freeze impo
我尝试将我的(正常工作的)python 3.6 tkinter gui 应用程序构建为 Windows 可执行文件。经过几个小时的尝试,出现了一个错误(有一些名称和 dll 问题),我让它运行了。但它
目前我正在使用 pyinstaller 来捆绑我的 python 应用程序。我同样迁移到 pyGObject(由于 pygtk 被折旧)。 现在 pyinstaller 不支持 pyGObject 并
我正在使用 cx_freeze 模块来创建安装程序和可执行文件。这似乎工作正常,但在运行可执行文件时,我收到以下错误和回溯。 D:\>"app.exe" Traceback (most recent
我可以使用 cx_freeze 来打包我的 python 工具,但是无法加载我需要的库。由于某种原因,输出的可执行文件/二进制名称不断包含在路径中。 我收到以下错误: OSError:/home/de
我正在尝试从 python 脚本(使用大量鸡蛋)构建可执行文件(适用于 32 位 Windows xp) 我考虑过 py2exe(0.6.9)、PyInstaller (1.4) 和 cx_Freez
您好,我尝试在我的 Linux 上安装 cx_Freeze,但我无法安装。我想安装它以将我的 python 应用程序 (.py) 转换为可执行应用程序。 我从这个网站下载资源:https://sour
我选择尝试使用 cx_freeze,它将我的简单 python 3.x 键盘记录器转换为 exe。我选择 cx_freeze 因为 py2exe 只是 python 2.x 我正在使用这个 setup
Adter 使用 cx-freeze python 3.6 创建一个 exe,在 Windows 中工作正常,但在 Linux 中它运行无限次而不停止,即使我只输入 print('hello word
我制作了一个程序,它使用 os.startfile() 启动另一个 python 程序。 我想把它作为两个 exe 文件,通过使用 subprocess.call() 启动第二个文件,在 1 个构建文
我目前正在尝试制作 cx_freeze在我必须使用的 Solaris 工作站上工作,以便从我拥有的 Python 脚本生成可执行文件。问题是,我不是这台机器的管理员,安装cx_freeze请求写入站点
我在将内容包含到我的 cx_Freeze 脚本中时遇到了这个问题,我试图做的是包含 easygui 和 sys,因为我在我的程序中使用它们。任何帮助将不胜感激! 代码如下: import sys fr
我是一名优秀的程序员,十分优秀!