Using Python 3 in virtualenv
使用virtualenv,我使用默认版本的python(2.7)运行我的项目。在一个项目中,我需要使用python 3.4。
我用
例如sudo virtualenv envpython3
如果我尝试:
1 | virtualenv -p python3 test |
我得到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
简单运行
1 | virtualenv -p python3 envname |
操作编辑后更新:
如本文所述,操作版virtualenv中有一个bug。通过运行以下命令解决了问题:
1 | pip install --upgrade virtualenv |
python 3内置了对虚拟环境的支持——venv。最好用它来代替。参考文件:
Creation of virtual environments is done by executing the pyvenv
script:
pyvenv /path/to/new/virtual/environment
更新python 3.6及更新版本:
由于pawciobiel的正确评论,从python 3.6开始不推荐使用
1 | python3 -m venv /path/to/new/virtual/environment |
安装必备组件。
1 | sudo apt-get install python3 python3-pip virtualenvwrapper |
创建基于python3的虚拟环境。可选启用
1 | mkvirtualenv -p /usr/bin/python3 <venv-name> |
设置到虚拟环境中。
1 | workon <venv-name> |
使用
1 2 | pip install -r requirements.txt pip install <package_name> |
当同时处理多个python项目时,通常建议在全局安装像
使用这种技术,除了消耗最小的磁盘空间和网络带宽外,还可以节省大量时间来获取和安装软件包。
1 2 | sudo -H pip3 -v install pdbpp mkvirtualenv -p $(which python3) --system-site-packages <venv-name> |
Django特定说明
如果有很多系统范围的python包,那么建议不要使用
说了那个实验,哪个选项更有效。对于django项目,跳过
我试过pyenv,它对于切换python版本(全局、本地文件夹或virtualenv)非常方便:
1 | brew install pyenv |
然后安装所需的python版本:
1 | pyenv install 3.5.0 |
只需创建带有所需解释器版本路径的virtualenv:
1 | virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv |
就这样,检查版本:
1 | . ./myenv/bin/activate && python -V |
还有一个pyenv-pyenv-virtualenv的插件,但不知怎么的,它对我不起作用。
1 | virtualenv --python=/usr/bin/python3 <name of env> |
为我工作。
您可以在创建环境时指定特定版本的python。在virtualenv.py中提到过
1 | virtualenv --python=python3.5 envname |
在某些情况下,这必须是可执行文件的完整路径:
1 | virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname |
1 2 3 4 5 6 7 | 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) |
我有同样的消息。在我的情况下,tbrisker的解决方案不起作用。相反,这解决了问题:
1 | $ python3 -m venv .env |
python现在以"venv"的名字提供了自己的虚拟环境实现。我建议使用它,而不是virtualenv。
从Venv-Docs报价,
Deprecated since version 3.6: pyvenv was the recommended tool for
creating virtual environments for Python 3.3 and 3.4, and is
deprecated in Python 3.6.Changed in version 3.5: The use of venv is now recommended for
creating virtual environments.
对于Windows,要在某些项目上启动venv,请打开命令:
1 | python -m venv"c:\path\to\myenv" |
(如果目录路径包含空格,建议在其周围使用双引号)。例如:"c:/my dox/spaced directory/something")。
一旦设置了venv,您将在项目目录中看到一些新的文件夹。其中之一就是"脚本"。
要激活或调用venv,您需要:
1 | C:\> <venv>\Scripts\activate.bat |
您可以通过在shell中键入"deactivate"来停用虚拟环境。这样,您就可以安装项目特定的库了,这些库将位于文件夹"lib"下。
=========================编辑1=============================下面将讨论的场景不是最初要求的,只是在有人将vscode与python扩展一起使用时添加它。
如果在其python扩展中使用vs代码,则可能会遇到指向全局安装的pylint问题。在这种情况下,pylint将无法看到安装在虚拟环境中的模块,因此在导入时将显示错误。
下面是一个简单的方法来克服这个问题。
1 2 3 | cd Workspace\Scripts .\Activate.ps1 code . |
我们基本上是先激活环境,然后调用vs代码,以便pylint在环境中启动,并可以看到所有本地包。
除了其他答案外,我建议检查您正在执行的virtualenv实例:
1 | which virtualenv |
如果这在/usr/local/bin中出现,那么您可能(甚至可能)安装了virtualenv(可能使用easy-tools或pip的实例),而不使用系统的包管理器(在op中为brew)。这是我的问题。
几年前,当我更加无知的时候,我安装了virtualenv,它掩盖了我的系统包提供的virtualenv。
在删除了这个旧的、损坏的virtualenv之后,我的问题就消失了。
在python3.6我尝试过
在Mac上,我必须做以下工作才能让它工作。
1 | mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere |
这就是在python/python3中运行虚拟环境所需的全部内容。
首先确保您有virtualenv,现在
运行:
1 | virtualenv -p python3 <env name> |
有时上面的命令失败,只需使用以下命令:
1 | 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 |
现在激活虚拟环境:
1 | source <env_name>/bin/activate |
或:
1 | source `pwd`/<env_name>/bin/activate |
运行(退出):
1 | deactivate |
如果安装python3(
当然,我知道virtualenv玉米煎饼只是一个包装,但多年来它对我很有帮助,减少了一些学习曲线。
对于那些在使用Python3(python3)时遇到问题的人。
你可以使用
1 | conda create -n name_of_your_virtualenv python=python_version |
激活环境(Linux、MacOS)
1 | source activate name_of_your_virtualenv |
对于Windows
1 | activate name_of_your_virtualenv |
It worked for me
1 | virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3 |
我都试过了,还是没用。所以作为一个蛮力,我只是重新安装了Python,重新安装了虚拟环境…它奏效了。
1 2 3 4 5 6 7 8 9 10 11 12 | 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$ |
我想在Centos7上保留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.它显示了不同平台的步骤,但基本步骤是
对于使用pipenv并希望安装特定版本的用户:
1 | pipenv install --python 3.6 |
在Windows命令行上,以下内容对我有效。首先找出您的python可执行文件的位置:
1 | where python |
这将输出到系统上不同python.exe的路径。这里是我的:
1 2 | C:\Users\carandangc\Anaconda3\python.exe C:\Python27\python.exe |
所以对于python3,它位于我的第一个路径中,所以我cd到应用程序的根文件夹,在那里我要创建一个虚拟环境文件夹。然后,我运行以下命令,其中包括指向python3可执行文件的路径,并将虚拟环境命名为"venv":
1 | virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv |
接下来,激活虚拟环境:
1 | call venv\Scripts\activate.bat |
最后,安装此虚拟环境的依赖项:
1 | pip install -r requirements.txt |
如果您知道虚拟环境中应用程序所需的库/模块,则可以手动填充此requirements.txt。如果应用程序在另一个环境中运行,则可以通过运行以下内容自动生成依赖项(CD到其工作环境中的应用程序文件夹):
1 | pip freeze > requirements.txt |
然后,一旦您的requirements.txt被"冻结",您就可以在另一台计算机或干净的环境中安装这些要求,方法如下(在CD到应用程序文件夹之后):
1 | pip install -r requirements.txt |
要在虚拟环境中查看您的python版本,请运行:
1 | python --version |
那么,瞧……你的python3在你的虚拟环境中运行。我的输出:
1 | Python 3.7.2 |
我也有同样的错误,因为它与miniconda3安装冲突,所以当您键入"which virtualenv"时,如果您已经安装了miniconda,并且指向该安装,您可以删除它(如果您喜欢我,但尚未移动到它),或者更改环境变量以指向您想要的安装。