簡體   English   中英

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

[英]How can I use virtualenv to use 32-bit and 64-bit Python in Windows?

我有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 安裝的虛擬環境?

為了讓您的虛擬環境在更改路徑后運行,您需要將 virtualenv 安裝到 32 位 python 中 - 沒有什么可以阻止您在每個 python 中擁有一個 virtualenv 副本。

假設你有 python 2.7.c 64-bit 作為你的默認 python 並且你還安裝了 python 2.7.x 32-bit你無論如何都需要- 還假設你在 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

如果您先安裝 32Bit 版本,然后安裝 64Bit 版本(並且您將 python 添加到路徑),那么您可以使用更新的 python 啟動器( py )創建您的 virtualenv 的 64Bit 版本

py -m venv my-env-name

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

上面可以找到@How to install win-32 package on a 64-bit system with conda install我親自試過了,它成功了(安裝了32位python xx)。 使用 Anaconda 不是必需的,但它會安裝所有的 anaconda 包,如 pandas。

免責聲明:下面的評論是一種警告,而不是對其他任何人提交的答案的攻擊。

正如我的朋友告訴我的“不鼓勵手動更改路徑,主要是因為您必須通知其他使用 Python(並且您不一定知道)的應用程序指向不同的文件夾,並且更改不一定是在你的系統中保持一致。在某種程度上,virtualenvs 做同樣的事情,但以一種更清晰和(有點)可預測的方式“。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM