Python生成:OSError:[WinError 193]%1不是有效的Win32应用程序,但仅使用activate_this.py
这大概是相同的,但是,没有答案,我有更多的细节,我的情况 背景: 我使用的是venv,它通过以下方式在内部激活:Python生成:OSError:[WinError 193]%1不是有效的Win32应用程序,但仅使用activate_this.py,python,virtualenv,Python,Virtualenv,这大概是相同的,但是,没有答案,我有更多的细节,我的情况 背景: 我使用的是venv,它通过以下方式在内部激活:activate\u this.py: exec(compile(open(venv_script, "rb").read(), venv_script, 'exec'), dict(__file__=venv_script)) 这至少对python2有效 当我导入numpy时,我得到: >>> import numpy Traceback (most recent
activate\u this.py
:
exec(compile(open(venv_script, "rb").read(), venv_script, 'exec'), dict(__file__=venv_script))
这至少对python2有效
当我导入numpy时,我得到:
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Dropbox (CEP)\venvs\win\CYAN\Lib\site-packages\numpy\__init__.py", line 142, in <module>
from . import core
File "C:\Dropbox (CEP)\venvs\win\CYAN\Lib\site-packages\numpy\core\__init__.py", line 23, in <module>
WinDLL(os.path.abspath(filename))
File "C:\Python37\lib\ctypes\__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 193] %1 is not a valid Win32 application
这是一个众所周知的错误:在您试图在64位进程中加载32位.dll时,这是一个架构不匹配(32位/64位)。为了清楚起见,numpy包含一组.dll,它们在导入时会在当前进程中加载 这个问题中的例子是扭曲的,很难理解:一些例子有效,一些不起作用,然后一些再次起作用,等等(例如,我甚至不知道第二个片段的目的是什么),而不是清楚地区分起作用的场景和不起作用的场景 无论如何,尽管有上述情况,我还是能够确定问题所在
- 您创建(并在其中安装了numpy)的testEnv环境是32位的:
- 第三段(开始):
使用基本前缀“c:\users\brianp\appdata\local\programs\python 37-32”
- 第三段(结束):
python3.7.2(tags/v3.7.2:9A3ffc0492018年12月23日22:20:52)[MSC v.191632位(Intel)]
- 在这种情况下,
起作用(并且numpy(它包含的.dll)是32位的import numpy
- 第三段(开始):
- 从外部testEnv启动的Python解释器是64位
- 第三段(mid):
python3.7.3(v3.7.3:ef4ec6ed12,2019年3月25日,22:22:05)[MSC v.191664位(AMD64)]在win32上
- 在当前进程中运行testEnv的activate_this.py时,它会将testEnv路径添加到%PYTHONPATH%(
),并且sys.path
会从testEnv中选取32位版本,这显然会失败import numpy
- 第三段(mid):
- 从VEnv外部使用32位Python(
)C:\Dropbox(CEP)\venvs>Python
- 另一种方法是:创建一个testEnv64 VEnv,并使用其activate_this.py
- 不要使用activate_this.py,除非你知道自己在做什么(我建议使用这个)
- 可能发生了另一件事
VS code
自动从预定义的操作系统位置搜索numpy和其他软件包。它可能找到了32位版本的numpy
,而不是64位的版本。
修正:
从所有操作系统位置卸载numpy
*在VS代码终端中
。键入pip uninstall numpy
或conda uninstall numpy
(如果使用Anaconda
)
*重新启动VS代码
*瞧!(如果问题仍然存在,请重新安装numpy)如果在错误之前提供一个.Add aprint(sys.executable)
,并粘贴output@CristiFati: Done@UlrichEckhardt什么能使它完整?它非常小。。。我打开python,在大块中键入内容,然后得到错误…“NameError:name'venv_script'未定义”-请阅读提供的链接。人们不应该猜测其他部分看起来像什么或者猜测哪些部分是相关的。最好从设置venv的空目录开始。当然,只要设置一个venv是必要的,这是你在这里发布之前要做的工作。。。我不想在添加更多信息时删除代码段,所以我只添加了一个新的代码段。。。抱歉,如果这让人困惑的话。。。B-/不必道歉,因为它更难阅读,它让我更加注意:)。底线:我的解释有意义吗?是的!这让我克服了那个问题,进入了下一个问题!
C:\Dropbox (CEP)\venvs>virtualenv testEnv
Using base prefix 'c:\\users\\brianp\\appdata\\local\\programs\\python\\python37-32'
New python executable in C:\DROPBO~1\venvs\testEnv\Scripts\python.exe
Installing setuptools, pip, wheel...
done.
C:\Dropbox (CEP)\venvs>testEnv\Scripts\activate
(testEnv) C:\Dropbox (CEP)\venvs>pip install numpy
Collecting numpy
Using cached https://files.pythonhosted.org/packages/61/be/b4d697563d4a211596a350414a87612204a8bb987c4c1b34598cd4904f55/numpy-1.16.2-cp37-cp37m-win32.whl
Installing collected packages: numpy
Successfully installed numpy-1.16.2
(testEnv) C:\Dropbox (CEP)\venvs>deactivate
C:\Dropbox (CEP)\venvs>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> this_file = 'testenv/Scripts/activate_this.py'
>>> exec(open(this_file).read(), {'__file__': this_file})
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Dropbox (CEP)\venvs\testenv\Lib\site-packages\numpy\__init__.py", line 142, in <module>
from . import core
File "C:\Dropbox (CEP)\venvs\testenv\Lib\site-packages\numpy\core\__init__.py", line 23, in <module>
WinDLL(os.path.abspath(filename))
File "C:\Python37\lib\ctypes\__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 193] %1 is not a valid Win32 application
>>> exit()
C:\Dropbox (CEP)\venvs>testEnv\Scripts\activate
(testEnv) C:\Dropbox (CEP)\venvs>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>>