it-swarm.dev

在virtualenv中使用Python 3

使用 virtualenv ,我使用默认版本的Python(2.7)运行我的项目。在一个项目中,我需要使用Python 3.4。

我使用brew install python3将它安装在我的Mac上。现在,我如何创建一个使用新版本的virtualenv?

例如Sudo virtualenv envPython3

如果我尝试:

virtualenv -p python3 test

我明白了:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable
665
Prometheus

简单地跑

virtualenv -p python3 envname

OP编辑后更新:

OP版本的virtualenv中存在一个错误,如 此处所述 。通过运行修复问题:

pip install --upgrade virtualenv
1199
tbrisker

Python 3内置了对虚拟环境的支持 - venv 。使用它可能会更好。参考文档:

通过执行pyvenv脚本来创建虚拟环境:

pyvenv /path/to/new/virtual/environment

更新Python 3.6及更新版本:

As pawciobiel correct commentspyvenv is deprecated 从Python 3.6开始,新的方法是:

python3 -m venv /path/to/new/virtual/environment
206
geckon

安装先决条件。

Sudo apt-get install python3 python3-pip virtualenvwrapper

创建基于Python3的虚拟环境。 (可选)启用--system-site-packages标志。

mkvirtualenv -p /usr/bin/python3 <venv-name>

设置为虚拟环境。

workon <venv-name>

使用pip包管理器安装其他要求。

pip install -r requirements.txt
pip install <package_name>

当同时处理多个python项目时,通常建议全局安装像pdbpp这样的公共包,然后在virtualenvs中重用它们。

除了占用最少的磁盘空间和网络带宽之外,使用这种技术可以节省大量时间来获取包和安装它们。

Sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>

Django具体说明

如果有很多系统范围的python包,那么建议不要使用--system-site-packages标志,特别是在开发过程中,因为我注意到它大大减慢了Django的启动速度。我认为Django环境初始化是手动扫描并附加系统路径中的所有站点包,这可能是原因。甚至python manage.py Shell变得非常慢。

说实验哪个选项效果更好。可以安全地跳过Django项目的--system-site-packages标志。

52
Sandeep

我试过 pyenv 并且它非常方便切换python版本(全局,本地文件夹或virtualenv):

brew install pyenv

然后安装你想要的Python版本:

pyenv install 3.5.0

并简单地创建virtualenv与所需的解释器版本的路径:

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

就是这样,查看版本:

. ./myenv/bin/activate && python -V

还有pyenv pyenv-virtualenv的插件 但它不能以某种方式对我有用。

46
Johnner
virtualenv --python=/usr/bin/python3 <name of env>

为我工作。

32
bewithaman

您可以在创建环境时指定特定的Python版本
virtualenv.py中提到

virtualenv --python=python3.5 envname

在某些情况下,这必须是可执行文件的完整路径:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname

-p的工作原理

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)
17
Kiran Jasvanee

我有同样的ERROR消息。 tbrisker的解决方案在我的案例中不起作用。相反,这解决了这个问题:

$ python3 -m venv .env
10
Aziz Alto

除了其他答案,我建议您检查您正在执行的virtualenv实例:

which virtualenv

如果在/ usr/local/bin中出现这种情况,则可能 - 甚至可能 - 您安装virtualenv(可能使用easy_tools或pip的实例)而不使用系统的包管理器(在OP的情况下为brew)。这是我的问题。

几年前 - 当我更加无知时 - 我已经安装了virtualenv,它掩盖了我的系统包提供的virtualenv。

在删除了这个破旧的虚拟虚拟物后,我的问题就消失了。

6
sage

Python现在带有自己的虚拟环境实现,名称为“venv”。我建议使用它,而不是virtualenv。

引自 venv - docs

从版本3.6开始不推荐使用:pyvenv是为Python 3.3和3.4创建虚拟环境的推荐工具,在Python 3.6中已弃用。

在版本3.5中更改: 现在建议使用venv来创建虚拟环境。

对于windows,要在某个项目上启动venv,打开cmd:

python -m venv "c:\path\to\myenv"

(如果它包含任何空格,建议在目录路径周围使用双引号。例如:“C:/ My Dox/Spaced Directory/Something”)

一旦设置了venv,您将在项目目录中看到一些新文件夹。其中一个是“脚本”。

要激活或调用venv,您需要:

C:\> <venv>\Scripts\activate.bat

您可以在命令行管理程序中键入“deactivate”来停用虚拟环境。有了这个,您现在可以安装项目特定的库,它们将驻留在“Lib”文件夹下。

================================编辑1 ================ ====================将在下面讨论的场景不是最初的问题,只是添加这个以防有人使用带有python扩展名的vscode

如果您使用带有python扩展名的vs代码,则可能会遇到指向全局安装的pylint问题。在这种情况下,pylint将无法查看虚拟环境中安装的模块,因此在导入时将显示错误。

这里 是一个简单的方法来解决这个问题。

cd Workspace\Scripts
.\Activate.ps1
code .

我们基本上首先激活环境然后调用vs-code,以便pylint在环境中启动并且可以看到所有本地包。

6
Blaze

在python3.6中,我根据文档尝试了python3 -m venv myenv,但它花了这么长时间。所以非常简单快捷的命令是python -m venv yourenv它在python3.6上对我有用。

6
Sujeet Agrahari

在Mac上,我必须执行以下操作才能使其正常工作。

mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
5
Stryker

这就是在python/python3中运行虚拟环境所需的全部内容

首先确保你有 virtualenv 现在

跑:

virtualenv -p python3 <env name>

有时上面的cmd失败,只需使用:

python3 -m virtualenv <env_name>  # you can specify full path instead <env_name> to install the file in a different location other than the current location

现在激活虚拟环境:

source <env_name>/bin/activate

要么:

source `pwd`/<env_name>/bin/activate

运行(退出):

deactivate 
4
Kohn1001

virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME>这将为您的虚拟环境添加 python3 path。

3
Hardik Gajjar

如果您安装python3(brew install python3)和 virtualenv burrito ,则可以执行mkvirtualenv -p $(which python3) env_name

当然,我知道virtualenv卷饼只是一个包装,但多年来它一直很好,减少了一些学习曲线。

3
Antony

它对我有用

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
2
Dadaso Zanzane

对于那些在使用Anaconda3(Python 3)时遇到麻烦的人。

你可以用

conda create -n name_of_your_virtualenv python=python_version 

激活环境(Linux,MacOS)

source activate name_of_your_virtualenv

对于Windows

activate name_of_your_virtualenv
2
jkhosla

对于那些使用 pipenv 并且想要安装特定版本的人:

pipenv install --python 3.6
1
Vlad Bezden

我想在Centos 7上保留python 2.7.5作为默认版本,但在python 2.x中与其他虚拟环境一起运行的虚拟环境中使用python 3.6.1

我发现以下链接是最新python版本的最佳解决方案(python 3.6.1) https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local -programming-environment-for-python-3 。它显示了不同平台的步骤,但基本步骤是

  1. 为您的平台安装python3.x(如果不存在)
  2. 为您的平台安装python3.x-devel
  3. 在python 3.x中创建虚拟环境(例如$ python3.6 -m venv virenv_test_p3 /)
  4. 激活python 3.x的testenvironment(例如source virenv_test_p3/bin/activate)
  5. 安装要在新的python 3虚拟环境中使用的软件包以及支持的软件包(例如pip install Django == 1.11.2)
1
Gunnar Sigfusson

我尝试了以上所有的东西,它仍然无法正常工作。因此,作为一个蛮力,我只是重新安装了anaconda,重新安装了virtualenv ......并且它起作用了。

Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting virtualenv
  Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)
    100% |████████████████████████████████| 3.5MB 114kB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-15.0.3
Amans-MacBook-Pro:python amanmadan$ virtualenv my_env
New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python
Installing setuptools, pip, wheel...done.
Amans-MacBook-Pro:python amanmadan$ 
1
Aman Madan

在Windows命令行上,以下内容适用于我。首先找出python可执行文件的位置:

where python

这将输出到系统上不同python.exe的路径。这是我的:

C:\Users\carandangc\Anaconda3\python.exe
C:\Python27\python.exe

所以对于Python3来说,这是我的第一个路径,所以我cd到应用程序的根文件夹,我想创建一个虚拟环境文件夹。然后我运行以下内容,其中包括我的Python3可执行文件的路径,命名我的虚拟环境'venv':

virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv

接下来,激活虚拟环境:

call venv\Scripts\activate.bat

最后,安装此虚拟环境的依赖项:

pip install -r requirements.txt

如果您知道虚拟环境中应用程序所需的库/模块,则可以手动填充requirements.txt。如果您的应用程序在另一个环境中运行,那么您可以通过运行以下命令自动生成依赖项(cd到它工作的环境中的应用程序文件夹):

pip freeze > requirements.txt

然后,一旦你有您已经'冻结'的requirements.txt,那么您可以使用以下内容(在cd到应用程序文件夹之后)将要求安装在另一台机器或干净环境中:

pip install -r requirements.txt

要在虚拟环境中查看python版本,请运行:

python --version

那么瞧...你的Python3在你的虚拟环境中运行。输出给我:

Python 3.7.2
0
Carlo Carandang

我得到了同样的错误,因为它与miniconda3安装冲突,所以当你输入“哪个virtualenv”,如果你已经安装了miniconda并且它指向那个安装你可以删除它(如果你喜欢我并且没有移动到目前为止)或更改您的环境变量以指向您想要的安装。

0
PrincessPea