代码之家  ›  专栏  ›  技术社区  ›  chryss

在Mac OS X上控制Python—设置环境和库

  •  20
  • chryss  · 技术社区  · 14 年前

    • Python 2.6.1(Mac默认版本?) /usr/bin (还有,2.5.4,我不知道它是怎么做到的)
    • 通过安装Python 2.6.5 MacPorts /opt/local/bin/ . 这是我的默认值
    • pip 安装程序库,这些程序库最终会出现在一些不虔诚的地方(比如 /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ -是吗?)
    • 否则,主要是TextMate,而Git用于版本控制。Django和谷歌应用引擎等。。。

    现在我正准备设置2.7和3.2,我对这种随意的状态很不满意。那么,你最喜欢的组织代码和库的方法是什么,你是如何说服Mac提交的呢?

    py.test 通过 皮普 只能从过时的2.6.1python加载它,而不是我当前的2.6.5python。MacPorts有 python_select

    reason: chris$ python_select -l
    Available versions:
    current none python26 python26-apple
    

    我问过的大多数Python用户都不使用MacPorts,我不太喜欢,但是Mac Python的股票来自 python.org . 我也听到了使用的建议 virtualenv 系统地,那么什么是链接到一个好的实用介绍?

    4 回复  |  直到 13 年前
        1
  •  17
  •   Peter Mortensen nickfox    13 年前

    virutalenv 是一个很好的工具,对于在大多数平台上管理多个Python实例非常有用。不过,在MacOSX上,情况更为复杂,因为使用框架构建使得即使是同一主要版本的Python,也经常遇到多个实例。我建议您在深入研究之前,首先了解并熟悉如何管理MacOSX上的框架安装 virtualenv .

    " /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ -“是吗?”

    框架构建

    对于macosx10.6,苹果提供了python2.6(源于 /System/Library/Frameworks/Python.framework 符号链接到 /usr/bin/python2.6 /usr/bin/python2.5 /Library/Frameworks/Python.framework . MacPorts使用 /opt/local/Library/Frameworks/Python.framework .

    这些框架包括 bin 目录(位于 ../Versions/x.x/bin 在框架内);这通常是安装包脚本的默认位置。它也是放置到解释器二进制文件的符号链接的地方。

    下面我们来看看python.org-安装了多个Python版本的样式框架:

    $ cd /Library/Frameworks/Python.framework/Versions/
    $ ls -l
    total 8
    drwxrwxr-x  8 root  admin  340 Dec 23  2008 2.5/
    drwxrwxr-x  8 root  admin  340 Aug 10 21:42 2.6/
    drwxrwxr-x  8 root  admin  340 Jul  3 12:24 2.7/
    drwxrwxr-x  7 root  admin  306 Mar 23 17:42 3.1/
    drwxrwxr-x  7 root  admin  306 Aug 10 22:14 3.2/
    lrwxr-xr-x  1 root  admin    3 Aug 10 21:47 Current@ -> 2.6
    $ cd 2.6
    $ ls -l
    total 7776
    lrwxr-xr-x  1 root  admin       17 Aug 10 21:47 Headers@ -> include/python2.6
    drwxrwxr-x  3 root  admin      102 Aug 10 21:42 Mac/
    -r-xrwxr-x  1 root  admin  3973552 Aug 10 21:41 Python*
    drwxrwxr-x  4 root  admin      170 Aug 10 21:48 Resources/
    drwxrwxr-x  2 root  admin      578 Aug 12 15:19 bin/
    drwxrwxr-x  3 root  admin      102 Aug 10 21:42 include/
    drwxrwxr-x  3 root  admin      646 Aug 10 21:43 lib/
    drwxrwxr-x  3 root  admin      102 Aug 10 21:41 share/
    $ ls -l bin
    total 264
    -rwxrwxr-x  1 root  admin    150 Aug 10 21:41 2to3*
    -rwxr-xr-x  1 nad   admin    360 Aug 12 15:19 easy_install*
    -rwxr-xr-x  1 nad   admin    368 Aug 12 15:19 easy_install-2.6*
    lrwxr-xr-x  1 root  admin      7 Aug 10 21:47 idle@ -> idle2.6
    -rwxrwxr-x  1 root  admin    138 Aug 10 21:41 idle2.6*
    lrwxr-xr-x  1 root  admin      8 Aug 10 21:47 pydoc@ -> pydoc2.6
    -rwxrwxr-x  1 root  admin    123 Aug 10 21:41 pydoc2.6*
    lrwxr-xr-x  1 root  admin      9 Aug 10 21:47 python@ -> python2.6
    lrwxr-xr-x  1 root  admin     16 Aug 10 21:47 python-config@ -> python2.6-config
    -rwxrwxr-x  1 root  admin  29584 Aug 10 21:43 python2.6*
    -rwxrwxr-x  1 root  admin   1463 Aug 10 21:42 python2.6-config*
    lrwxr-xr-x  1 root  admin     10 Aug 10 21:47 pythonw@ -> pythonw2.6
    -rwxrwxr-x  1 root  admin  29584 Aug 10 21:43 pythonw2.6*
    lrwxr-xr-x  1 root  admin     11 Aug 10 21:47 smtpd.py@ -> smtpd2.6.py
    -rwxrwxr-x  1 root  admin  18272 Aug 10 21:41 smtpd2.6.py*
    

    这是一个MacPorts 箱子

    $ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6
    $ ls -l bin
    total 952
    -rwxr-xr-x  2 root  wheel    160 Jul 15 01:56 2to3*
    -rwxr-xr-x  2 root  wheel   1541 Jun  8 19:59 apirst2html.py*
    -rwxr-xr-x  2 root  wheel    363 Oct  5  2009 bdist_mpkg*
    [...]
    -rwxr-xr-x  2 root  wheel    211 Jun  2 12:45 django-admin.py*
    -rwxr-xr-x  2 root  wheel    410 Jul 15 17:30 easy_install*
    -rwxr-xr-x  2 root  wheel    418 Jul 15 17:30 easy_install-2.6*
    [...]
    -rwxr-xr-x  2 root  wheel    368 Jun 24 02:00 pip*
    -rwxr-xr-x  1 root  wheel    342 Sep 18  2009 pkginfo*
    [...]
    lrwxr-xr-x  1 root  wheel      9 Jul 15 01:58 python@ -> python2.6
    lrwxr-xr-x  1 root  wheel     16 Jul 15 01:58 python-config@ -> python2.6-config
    -rwxr-xr-x  2 root  wheel  24932 Jul 15 01:57 python2.6*
    -rwxr-xr-x  2 root  wheel   1473 Jul 15 01:57 python2.6-config*
    [...]
    

    如果使用安装2.7或3.1 pythonpython.org 安装程序或MacPorts,它们都植根于 /Library/Frameworks /opt/local/Library/Frameworks 很高兴与其他版本共存。要成功使用框架安装,您需要管理shell PATH . 特别是,您应该确保 箱子 要使用的Python目录位于 路径 ~/.bash_profile

    export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin:/opt/local/bin:$PATH
    

    或者是为了python.org 安装人员:

    export PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:$PATH
    

    另外,通常需要安装一个单独版本的Python包管理附加组件(如 pip 或者 easy_install 命令来自 Distribute setuptools 箱子 sudo port install py26-pip sudo port install py31-distribute ). 请注意,苹果提供了一套 中的链接 /usr/bin 为它的python和他们安装包 /Library/Python . 你需要确保你使用 易于安装 皮普 适合您的Python实例。确保实例的框架 路径

    注意,如果您使用MacPorts 可以 python_select 命令来管理所指向的Python实例 /opt/local/bin/python . 那么如果 /opt/local/bin python 它将支配你的默认 python . 但是您确实需要通过添加框架来管理路径 箱子 python\u选择 一般来说并不是那么有用。

    包括 处理构建和链接到MacOSX未附带的第三方C库时偶尔出现的混乱细节。例如 MySQLdb PIL 由于MySQL客户机库和 libjpeg ,但MacPorts使一切都变得更容易。但是您可以选择直接使用MacPorts安装( sudo port py26-pil )或通过 皮普 ( sudo pip install pil 易于安装 ,或者您可以下载源代码,自己动手( sudo python setup.py ... ). 因为所有的封面下都使用Python的 Distutils 为了完成这些肮脏的工作,所有这些方法通常都会在给定Python实例的相同位置安装包的文件。

        2
  •  2
  •   JS.    6 年前

    设置:
    Mac运行10.14
    Python 3.7版
    各种包装:熊猫、IPython、帕拉米科等。

    蟒蛇:
    Python.org . 单击macOS的“下载”按钮,下载软件包并单击安装程序。完成。当需要升级到下一个python3版本时,重复这个过程。
    要在命令行上获取Python3解释器而不是Python2解释器,请使用 python3 而不是 python .

    摆脱老版的Python3

    安装程序包:
    @如果你想让安装软件包变得更容易,那么neddely建议使用虚拟环境是一个不错的选择。Python2的虚拟环境工具是virtualenv。这个工具在Python3中叫做“venv”。


    创建一个目录来保存所有虚拟环境。这是不必要的,但这是我记录我的。我保留了两个单独的dir,分别命名为“virtenvs”和“venvs”,这取决于我是为Python2还是Python3安装软件包。在本例中,我们将使用Python3:

    cd ~
    mkdir venvs
    cd venvs

    现在,我以我的项目或我安装的主要软件包命名我的软件包。在本例中,我们称之为“project1”:
    venv project1


    使用以下命令“激活”虚拟环境。每次启动新终端或会话时,您都需要对此进行检查。
    source ~/venvs/project1/bin/activate

    Pip变化很大,所以更新它
    pip install --upgrade pip

    第三步:
    现在,您可以开始在新的虚拟环境中安装软件包了:
    pip install pandas
    等。

    完成后或要切换到其他虚拟环境时,只需键入:
    deactivate


    浏览web以获取有关Python虚拟环境的更多信息。使用这种方法,我没有遇到需要MacPorts、Anaconda等的包。毫无疑问,有些包确实需要。基督教青年会。希望这种方法对你有用。

        3
  •  1
  •   davidA    13 年前

    我刚刚使用了“pythonbrew”,它是我在10.6.7上与股票系统Python一起安装的。不过,我不得不使用“-force”选项绕过编译后测试,因为test\u dl和test\u readline都失败了(google的快速检查并没有显示这些是真正的问题)。

    $ sudo easy_install pythonbrew
    

    $ pythonbrew_install
    

    因此,我现在有了一个非常独立的python-2.7.1安装,而不干扰系统安装。

        4
  •  0
  •   sren    12 年前