首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows中使用virtualenv来使用32位和64位Python?

如何在Windows中使用virtualenv来使用32位和64位Python?
EN

Stack Overflow用户
提问于 2013-07-22 14:32:14
回答 3查看 14.9K关注 0票数 4

我在C:\Python27安装了64位Python (2.7.5),在C:\Python27_32安装了32位Python。

我想使用virtualenv来设置一个32位的虚拟环境,当我需要使用32位Python时,可以切换到这个虚拟环境。设置好环境后,我计划编辑bin\activate文件,将所有必需的路径更改为指向32位目录。

然而,当我尝试创建虚拟环境时,我得到了以下错误:

代码语言:javascript
复制
> virtualenv --python=C:\Python27_32\python.exe foo

Running virtualenv with interpreter C:\Python27_32\python.exe
PYTHONHOME is set.  You *must* activate the virtualenv before using it
New python executable in foo\Scripts\python.exe
Installing setuptools...............
  Complete output from command C:\Users\<user>\Drop...o\Scripts\python.exe -c "#!python
\"\"\"Bootstra...sys.argv[1:])

" C:\Python27\lib\site...ols-0.6c11-py2.7.egg:
  Traceback (most recent call last):
  File "<string>", line 278, in <module>
  File "<string>", line 238, in main
  File "build/bdist.linux-i686/egg/setuptools/command/easy_install.py", line 21, in <module>
  File "build/bdist.linux-i686/egg/setuptools/package_index.py", line 2, in <module>
  File "C:\Python27\Lib\urllib2.py", line 94, in <module>
    import httplib
  File "C:\Python27\Lib\httplib.py", line 71, in <module>
    import socket
  File "C:\Python27\Lib\socket.py", line 47, in <module>
    import _socket
ImportError: DLL load failed: %1 is not a valid Win32 application.
----------------------------------------
...Installing setuptools...done.
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\virtualenv.py", line 2577, in <module>
    main()
  File "C:\Python27\lib\site-packages\virtualenv.py", line 979, in main
    no_pip=options.no_pip)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 1091, in create_environment
    search_dirs=search_dirs, never_download=never_download)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 611, in install_setuptools
    search_dirs=search_dirs, never_download=never_download)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 583, in _install_req
    cwd=cwd)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 1057, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command C:\Users\<user>\Drop...o\Scripts\python.exe -c "#!python
\"\"\"Bootstra...sys.argv[1:])

" C:\Python27\lib\site...ols-0.6c11-py2.7.egg failed with error code 1

它似乎是在64位文件夹中进行导入,而不是在32位文件夹中。我不确定这是因为我的环境变量的设置方式,还是因为我首先在64位Python下安装了virtualenv。

以下是我的用户环境变量:

代码语言:javascript
复制
Path: %PYTHONHOME%;C:\Python27\Scripts
PYTHONHOME: C:\Python27
PYTHONPATH: C:\Python27\Lib;C:\Python27\Lib\lib-tk;C:\Python27\DLLs;

但是如果我在我的环境变量中将每个C:\Python27都改为C:\Python27_32,那么我就不能虚拟运行(ImportError: No module named pkg_resources)。

这是我第一次使用virtualenv,所以我确信我遗漏了一些基本的东西。如何创建使用32位Python安装的虚拟环境?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-22 14:41:16

为了让您的虚拟环境在您更改路径后运行,您需要将virtualenv安装到32位python中-没有什么可以阻止您在每个python中拥有一个virtualenv副本。

假设你有64位的python 2.7.c作为你的默认python,并且你也安装了python 2.7.x 32位,你无论如何都需要这两个--同时假设你是在windows上,你的两个python将安装在下面这样的地方:

C:\Python27C:\Python27_64

而后者在你的道路上。

另外,假设您在这两个文件中都安装了pip,那么您无论如何都需要为virtualenv安装它-要将virtualenv安装到32位python,您可以运行以下命令:

代码语言:javascript
复制
Path\To\32Bit\pip install virtualenv

代码语言:javascript
复制
set path=C:\Python27;C:\Python27\Scripts;%path%
rem The above should set your 32 bit to be found before your 64 bit
pip install virtualenv
票数 12
EN

Stack Overflow用户

发布于 2021-01-27 04:08:26

如果您首先安装了32位版本,然后安装了64位版本(并将python添加到path中),则可以使用更新后的python启动程序(py)来创建64位版本的virtualenv

py -m venv my-env-name

票数 0
EN

Stack Overflow用户

发布于 2018-11-07 08:58:13

在命令提示符下使用:set CONDA_FORCE_32BIT=1 conda create -n virtualenv_name python=x.x anaconda

上面的代码可以在@ How to install win-32 package on a 64-bit system with conda install上找到,我亲自试过了,它成功地工作了(安装了32位的python x.x )。使用Anaconda不是必需的,但它将安装所有的anaconda包,如pandas。

免责声明:下面的评论是一个警告,而不是对其他任何人提交的答案的攻击。

正如我的朋友告诉我的那样:“不鼓励手动更改路径,主要是因为您必须通知其他使用Python的应用程序(您不一定知道)指向不同的文件夹,并且更改在您的系统中并不一定是一致的。在某种程度上,virtualenv也是这样做的,但以一种更干净和(某种)可预测的方式。”

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17781266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档