博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在Mac上为Python设置虚拟环境
阅读量:2528 次
发布时间:2019-05-11

本文共 8809 字,大约阅读时间需要 29 分钟。

如果您是Python开发人员和Mac用户,那么在购买新计算机时的首要任务之一就是设置您的Python开发环境。 这是最好的方法(尽管我们已经写了 )。

制备

首先,打开一个终端并在其冷漠的提示下输入xcode-select --install 。 单击确认,您将设置一个基本的开发环境。 在MacOS上,必须执行此步骤才能设置本地开发实用程序,包括“许多常用的工具,实用程序和编译器,包括make,GCC,clang,perl,svn,git,size,strip,string,libtool,cpp,而通常在默认Linux安装中发现,很多其他有用的命令”,根据 。

接下来,通过从Internet执行以下Ruby脚本来安装 :

ruby -e " $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install) "

如果像我一样,您对从互联网上任意运行的脚本有信任问题,请单击上面的脚本,再仔细看一下它的功能。

祝贺您,完成此操作后,您将在Homebrew中拥有出色的软件包管理工具。 天真地,您可能会认为您下一个brew安装python之类的东西。 不,哈哈 Homebrew将为您提供Python版本,但是如果您让该工具为您管理环境,那么您获得的版本将不受控制。 您需要 (一种用于简单Python版本管理的工具),可以将其安装在 。 跑:

$  brew install pyenv

您希望pyenv每次打开提示符时都运行,因此在配置文件中包含以下内容(在MacOS上默认为,主目录中为.bash_profile ):

$      
cd ~
/
$
echo
'eval "$(pyenv init -)"'
>> .bash_profile

通过添加此行,每个新终端都将启动pyenv来管理终端中的PATH环境变量,并插入要运行的Python版本(与环境中显示的第一个相反)。有关更多信息,请阅读“ 。”)打开新终端,使更新的.bash_profile生效。

在安装您喜欢的Python版本之前,您需要安装一些有用的工具:

$  brew install zlib sqlite

压缩算法和数据库是pyenv的依赖项,如果配置不正确,通常 。 将这些导出添加到当前的终端窗口中,以确保安装完成:

$      
export
LDFLAGS =
"-L/usr/local/opt/zlib/lib -L/usr/local/opt/sqlite/lib"
$
export
CPPFLAGS =
"-I/usr/local/opt/zlib/include -I/usr/local/opt/sqlite/include"

现在已经完成了准备工作,是时候安装适合现代人的Python版本了:

$  pyenv install 3.7.3

去喝杯咖啡。 从豆中手工烘烤。 选择它们之后。 我在这里说的是要花一些时间。

添加虚拟环境

完成后,就该使您的虚拟环境易于使用了。 没有下一步,您将有效地为您从事的每个项目共享一个Python开发环境。 使用虚拟环境在每个项目的基础上隔离依赖项管理,将为我们提供比Python开箱即用的更多确定性和可重复性。 由于这些原因,请将virtualenvwrapper安装到Python环境中:

$ pyenv global 3.7.3     
# Be sure to keep the $() syntax in this command so it can evaluate
$ $
( pyenv
which python3
)
-m pip
install virtualenvwrapper

再次打开您的.bash_profile并添加以下内容,以确保每次打开新终端时它都能正常工作:

# We want to regularly go to our virtual environment directory      
$
echo
'export WORKON_HOME=~/.virtualenvs'
>> .bash_profile
# If in a given virtual environment, make a virtual environment directory
# If one does not already exist
$
echo
'mkdir -p $WORKON_HOME'
>> .bash_profile
# Activate the new virtual environment by calling this script
# Note that $USER will substitute for your current user
$
echo
'. ~/.pyenv/versions/3.7.3/bin/virtualenvwrapper.sh'
>> .bash_profile

关闭终端并打开一个新终端(或运行exec / bin / bash -l刷新当前终端会话),您将看到virtualenvwrapper初始化环境:

$      
exec
/ bin
/
bash
-l
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ premkproject
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ postmkproject
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ initialize
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ premkvirtualenv
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ postmkvirtualenv
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ prermvirtualenv
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ postrmvirtualenv
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ predeactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ postdeactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ preactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ postactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ get_env_details

从现在开始,您的所有工作都应该在虚拟环境中,以便您可以使用临时环境安全地进行开发。 使用此工具链,您可以设置多个项目并在它们之间切换,具体取决于您当时正在从事的工作:

$ mkvirtualenv test1     
Using base prefix
'/Users/moshe/.pyenv/versions/3.7.3'
New python executable
in
/ Users
/ moshe
/ .virtualenvs
/ test1
/ bin
/ python3
Also creating executable
in
/ Users
/ moshe
/ .virtualenvs
/ test1
/ bin
/ python
Installing setuptools, pip, wheel...
done.
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test1
/ bin
/ predeactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test1
/ bin
/ postdeactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test1
/ bin
/ preactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test1
/ bin
/ postactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test1
/ bin
/ get_env_details
( test1
) $ mkvirtualenv test2
Using base prefix
'/Users/moshe/.pyenv/versions/3.7.3'
New python executable
in
/ Users
/ moshe
/ .virtualenvs
/ test2
/ bin
/ python3
Also creating executable
in
/ Users
/ moshe
/ .virtualenvs
/ test2
/ bin
/ python
Installing setuptools, pip, wheel...
done.
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test2
/ bin
/ predeactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test2
/ bin
/ postdeactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test2
/ bin
/ preactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test2
/ bin
/ postactivate
virtualenvwrapper.user_scripts creating
/ Users
/ moshe
/ .virtualenvs
/ test2
/ bin
/ get_env_details
( test2
) $
ls
$WORKON_HOME
get_env_details         postmkvirtualenv        premkvirtualenv
initialize              postrmvirtualenv        prermvirtualenv
postactivate            preactivate             test1
postdeactivate          predeactivate           test2
postmkproject           premkproject
( test2
) $ workon test1
( test1
) $

deactivate命令使您退出当前环境。

推荐做法

您可能已经在〜/ src之类的目录中设置了长期项目。 当您开始处理新项目时,请进入该目录,为该项目添加一个子目录,然后使用Bash解释的功能根据您的目录名来命名虚拟环境。 例如,对于名为“ pyfun”的项目:

$      
mkdir
-p ~
/ src
/ pyfun
&&
cd ~
/ src
/ pyfun
$ mkvirtualenv $
(
basename $
(
pwd
)
)
# we will see the environment initialize
( pyfun
) $ workon
pyfun
test1
test2
( pyfun
) $ deactivate
$

每当您要处理此项目时,请返回该目录并通过输入以下内容重新连接到虚拟环境:

$      
cd ~
/ src
/ pyfun
( pyfun
) $ workon .

由于初始化虚拟环境意味着要获取Python版本和已加载模块的时间点副本,因此您有时会希望刷新项目的虚拟环境,因为依赖关系可能会发生巨大变化。 您可以通过删除虚拟环境来安全地执行此操作,因为源代码将保持不变:

$      
cd ~
/ src
/ pyfun
$ rmvirtualenv $
(
basename $
(
pwd
)
)
$ mkvirtualenv $
(
basename $
(
pwd
)
)

这种使用pyenv和virtualwrapper管理虚拟环境的方法可避免您在本地开发代码时不确定正在运行哪个版本的Python。 这是避免混乱的最简单方法,尤其是在与更大的团队合作时。

如果您刚刚开始配置Python环境,请阅读如何上使用 。 您还有其他初学者或中级Python问题吗? 发表评论,我们将在下一篇文章中考虑它们。

翻译自:

转载地址:http://ntbzd.baihongyu.com/

你可能感兴趣的文章
Android 网络请求详解
查看>>
边工作边刷题:70天一遍leetcode: day 33
查看>>
第10章 系统级I/O(下)
查看>>
把一个字典扁平化
查看>>
批量取出文件夹中图片的名字存进文本,并去命名新的文件夹下的图片
查看>>
webapck 速度优化策略
查看>>
《C++ Primer 4th》读书笔记 序
查看>>
TCP和UDP的区别
查看>>
PHP.ini 文件大小限制
查看>>
Windows上搭建安卓的Java开发环境
查看>>
接口自动化测试框架搭建
查看>>
OnClick方法与Click事件
查看>>
2015 HUAS Summer Trainning #6~H
查看>>
柯里化函数
查看>>
shell 加减乘除
查看>>
mysql常用命令
查看>>
.display:none与visible:hidden的区别
查看>>
Java NIO
查看>>
C#_抓包HttpWebRequest跟HttpWebResponse
查看>>
小程序 setData 动态设置变量
查看>>