首页 文章

在virtualenv中使用Python 3

提问于
浏览
578

使用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

19 回答

  • 47

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

    $ python3 -m venv .env
    
  • 168

    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
    

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

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

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

    Here是一个简单的方法来解决这个问题 .

    cd Workspace\Scripts
    .\Activate.ps1
    code .
    

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

  • 12

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

    mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
    
  • 1042

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

  • 4

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

    通过执行pyvenv脚本来完成虚拟环境的创建:pyvenv / path / to / new / virtual / environment

    Update for Python 3.6 and newer:

    正如pawciobiel正确commentspyvenv 从Python 3.6开始是deprecated,新方法是:

    python3 -m venv /path/to/new/virtual/environment
    
  • 3

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

  • 7

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

    which virtualenv
    

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

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

    在删除了这个破旧的virtualenv之后,我的问题就消失了 .

  • 9

    我想在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的最佳解决方案 . 它显示了不同平台的步骤,但基本步骤是

    • 为您的平台安装python3.x(如果不存在)

    • 为您的平台安装python3.x-devel

    • 在python 3.x中创建虚拟环境(例如$ python3.6 -m venv virenv_test_p3 /)

    • 激活python 3.x的testenvironment(例如source virenv_test_p3 / bin / activate)

    • 安装要在新的python 3虚拟环境中使用的软件包以及支持的软件包(例如pip install Django == 1.11.2)

  • 0

    安装先决条件 .

    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 标志 .

  • 2
    virtualenv --python=/usr/bin/python3 <name of env>
    

    为我工作 .

  • 3

    您可以在创建环境时指定特定的 Version of 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)
    
  • 0

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

  • 30

    我试过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的插件,但它不能以某种方式对我有用 .

  • 42

    It worked for me

    virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
    
  • 6

    我尝试了以上所有的东西,它仍然无法正常工作 . 所以作为一个蛮力,我只是重新安装了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

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

    pipenv install --python 3.6
    
  • 2

    简单地跑

    virtualenv -p python3 envname
    

    OP编辑后更新:

    OP的virtualenv版本中有一个错误,如here所述 . 通过运行修复问题:

    pip install --upgrade virtualenv
    
  • 0

    如果你安装python3( brew install python3 )和virtualenv burrito,你可以做 mkvirtualenv -p $(which python3) env_name

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

  • 7

    对于那些在使用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
    

相关问题