我正在尝试将我的python脚本打包成可执行文件。我以为我会非常直接,因为我没有很多进口。首先是我的进口:
from __future__ import print_function
from netCDF4 import Dataset
import numpy as np
import os
from progressbar import Percentage,Bar,ETA,ProgressBar,RotatingMarker
我知道支持numpy
的事实我对__future__
或os
不确定,我确信netCDF4
和{{1}不支持。我在Python 2.7.7 for Windows 7上使用pyinstaller 2.1版,这是我用来开始创建.exe的命令:
progressbar
以下是错误列表。似乎有一个主要问题是无法找到模块C:\Users\Patrick\Desktop\netcdf_grid_extraction>pyinstaller --onefile --hidden-i
mport=netCDF4 --hidden-import=progressbar netcdf_grid_extraction.py
,以及与pywintypes.dll
相关的两个程序集。这是我得到的4个错误的列表。我怎样才能解决这些问题呢?
amd64_Microsoft
1130 INFO: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.
21022.8_none ...
1134 WARNING: Assembly not found
1134 ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
not found
1210 INFO: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.
21022.8_none ...
1210 WARNING: Assembly not found
1210 ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
not found
Traceback (most recent call last):
File "<string>", line 11, in <module>
File "C:\Users\Patrick\Anaconda\lib\site-packages\pythoncom.py", line 2, in <m
odule>
import pywintypes
File "C:\Users\Patrick\Anaconda\lib\site-packages\win32\lib\pywintypes.py", li
ne 124, in <module>
__import_pywin32_system_module__("pywintypes", globals())
File "C:\Users\Patrick\Anaconda\lib\site-packages\win32\lib\pywintypes.py", li
ne 98, in __import_pywin32_system_module__
raise ImportError("No system module '%s' (%s)" % (modname, filename))
ImportError: No system module 'pywintypes' (pywintypes27.dll)
4155 INFO: Processing hook hook-pywintypes
Traceback (most recent call last):
File "<string>", line 11, in <module>
File "C:\Users\Patrick\Anaconda\lib\site-packages\pythoncom.py", line 2, in <m
odule>
import pywintypes
File "C:\Users\Patrick\Anaconda\lib\site-packages\win32\lib\pywintypes.py", li
ne 124, in <module>
__import_pywin32_system_module__("pywintypes", globals())
File "C:\Users\Patrick\Anaconda\lib\site-packages\win32\lib\pywintypes.py", li
ne 98, in __import_pywin32_system_module__
raise ImportError("No system module '%s' (%s)" % (modname, filename))
ImportError: No system module 'pywintypes' (pywintypes27.dll)
5840 INFO: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.
21022.8_none ...
5840 WARNING: Assembly not found
5840 ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
not found
以下是我得到的警告,可能会或可能不会相关,并且都与无法找到Traceback (most recent call last):
File "C:\Users\Patrick\Anaconda\Scripts\pyinstaller-script.py", line 9, in <mo
dule>
load_entry_point('PyInstaller==2.1', 'console_scripts', 'pyinstaller')()
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\main.py", line 88, in run
run_build(opts, spec_file, pyi_config)
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\main.py", line 46, in run_build
PyInstaller.build.main(pyi_config, spec_file, **opts.__dict__)
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\build.py", line 1924, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'
))
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\build.py", line 1873, in build
execfile(spec)
File "C:\Users\Patrick\Desktop\netcdf_grid_extraction\netcdf_grid_extraction.s
pec", line 17, in <module>
console=True )
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\build.py", line 1170, in __init__
strip_binaries=self.strip, upx_binaries=self.upx,
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\build.py", line 1008, in __init__
self.__postinit__()
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\build.py", line 309, in __postinit__
self.assemble()
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\build.py", line 1050, in assemble
dist_nm=inm)
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\build.py", line 842, in checkCache
digest = cacheDigest(fnm)
File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.egg\Py
Installer\build.py", line 796, in cacheDigest
data = open(fnm, "rb").read()
IOError: [Errno 22] invalid mode ('rb') or filename: ''
ctypes
好消息是,似乎第三方模块正在考虑中,但我不确定它们是否与我所得到的错误有关:
890 WARNING: library python%s%s required via ctypes not found
2175 WARNING: library python%s%s required via ctypes not found
答案 0 :(得分:9)
我刚刚在pywintypes27.dll
中复制了DLL C:\Python27\Lib\site-packages\pywin32_system32
我在win32/lib
中添加了它。
没关系!
答案 1 :(得分:7)
我遇到了同样的问题。 dll,pywintypes27.dll位于C:\ Python27 \ Lib \ site-packages \ pywin32_system32中。我将此目录添加到我的PATH环境变量中,py2exe能够找到DLL。显然,设置路径不是正确的解决方案(你可以通过os.environ以编程方式进行),但对我有用。
答案 2 :(得分:4)
问题解决方案2.以下链接中的解决方案为我解决了问题:)
在python 2.7上通过conda安装了pywin32 build 219,导入pythoncom失败并带有
ImportError: No system module 'pywintypes' (pywintypes27.dll)
问题是库pywintypes27.dll不存储在
中pathtovenv \ lib \ site-packages \ win32 \ lib \ pywintypes27.dll
但在
pathtovenv \ lib中\站点包\ WIN32 \ pywintypes27.dll
在文件win32 \ lib \ pywintypes.py中添加以下elif部分解决问题
:::蟒
if found is None:
# Not in the Python directory? Maybe we were installed via
# easy_install...
if os.path.isfile(os.path.join(os.path.dirname(__file__), filename)):
found = os.path.join(os.path.dirname(__file__), filename)
elif os.path.isfile(os.path.join(os.path.dirname(__file__), "..", filename)):
found = os.path.join(os.path.dirname(__file__), "..", filename)
简而言之,看起来pywintypes27.dll位于错误的文件夹
答案 3 :(得分:4)
我使用虚拟环境并遇到了同样的问题。 pywintypes35.dll丢失了。这是我的解决方案:
pip install pypiwin32
答案 4 :(得分:1)
import win32api
当我最近知道应该调用 win32api 以摆脱此问题时,我也多次遇到此模块未找到错误。请判断此解决方案是否适合您
答案 5 :(得分:0)
不确定你是否还在寻找帮助。
错误 1 和 3 看起来像是一样的错误。 This SO question指出了我正确的方向。基本上,安装MS VC++ 9.0 x64 redistribution package,这应该处理这些错误。
错误 2 似乎是按照Lee的建议处理的。
错误 4 是因为,由于某种原因,PyInstaller在您的二进制列表中粘贴了一些空文件名。我不确定是否有一种不太常见的修复错误的方法,但我能够通过放置
来解决它for b in a.binaries:
if b[0] == '':
a.binaries.remove(b)
在我的spec文件中的Analysis( ... )
块之后。
我不确定library python%s%s required via ctypes not found
警告是否相关。他们非常怀疑,但我走下了一个兔子洞,试图弄清楚这些警告产生的地方,并且只在我晚上浪费了大约两个小时才成功。
答案 6 :(得分:0)
您应该使用'-install'参数运行pywin32扩展的安装后脚本,以确保正确设置环境。
pywin32_postinstall.py -install
答案 7 :(得分:0)
我有一个类似的问题:
Traceback (most recent call last):
File ".\install\pywin32_postinstall.py", line 605, in <module>
install()
File ".\install\pywin32_postinstall.py", line 328, in install
LoadSystemModule(lib_dir, "pywintypes")
File ".\install\pywin32_postinstall.py", line 166, in LoadSystemModule
mod = imp.load_dynamic(modname, filename)
ImportError: DLL load failed: The specified module could not be found.
我的错误是我通过pip 为用户
安装了pywin32pip install pywin32 --user
因此所需的DLL位于用户的AppData中:%appdata%\ Python \ Python27 \ site-packages 这就是为什么pywin32_postinstall.py找不到它们的原因。
在没有--user选项的情况下重新安装。
答案 8 :(得分:0)
修复:没有系统模块pywintypes(pywintypes39.dll)。
第一步是打开Python安装目录并找到“ pywin32_system32”文件夹
第二步是将整个文件夹复制到“项目名称\ venv \ Lib \ site-packages”
来源:https://programmersought.com/article/92924476575/
祝你好运!
答案 9 :(得分:0)
我使用的是 python 3.8 版,所以我正在复制以 38 结尾的文件(例如 xyz38.dll
)
从互联网下载并复制位置中的 pythoncom38.dll
和 pywintype38.dll
:
C:\Users\hp\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\win32
注意:此位置可能因电脑而异,因此请转到那个位置
在 module pywintypes
或 py_xyz not found
错误中显示的错误。
(同时将 .dll 文件粘贴到 libs 或 Lib 或 lib 文件夹中的所有 win32 文件夹中)
关闭python应用程序并重新启动并再次运行您的程序[100%有效]
如果上述方法不起作用,请在命令提示符下卸载 pypiwin32
pip uninstall pypiwin32
然后 pip install pipiwin32
并重复第一步和第二步并重启您的电脑