4

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

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

但是,当我尝试创建虚拟环境时,出现以下错误:

> 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。

这些是我的用户环境变量:

Path: %PYTHONHOME%;C:\Python27\Scripts
PYTHONHOME: C:\Python27
PYTHONPATH: C:\Python27\Lib;C:\Python27\Lib\lib-tk;C:\Python27\DLLs;

但是,如果我将环境变量中的每个更改C:\Python27C:\Python27_32,那么我就无法运行 virtualenv(ImportError: No module named pkg_resources)。

这是我第一次弄乱 virtualenv,所以我确定我缺少一些基本的东西。如何创建使用 32 位 Python 安装的虚拟环境?

4

3 回答 3

13

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

假设您将 python 2.7.c 64 位作为您的默认 python,并且您还安装了 python 2.7.x 32 位,那么无论如何您都需要两者- 还假设您在 Windows 上,您的两个 python 将安装在以下位置:

C:\Python27C:\Python27_64

后者在您的道路上。

还假设您在两者中都安装了 pip,无论如何您都需要它用于 virtualenv - 要将 virtualenv 安装到 32 位 python,您可以运行:

Path\To\32Bit\pip install virtualenv

或者

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
于 2013-07-22T06:41:16.140 回答
0

如果您先安装 32Bit 版本,然后再安装 64Bit 版本(并且您将 python 添加到路径),那么您可以使用更新的 python 启动器(py)创建您的 virtualenv 的 64Bit 版本

py -m venv my-env-name

于 2021-01-26T20:08:26.160 回答
-1

在命令提示符下使用: 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 xx安装)。不需要使用 Anaconda,但它会安装所有的 anaconda 包,如 pandas。

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

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

于 2018-11-07T00:58:13.023 回答